- 博客(60)
- 资源 (11)
- 收藏
- 关注

原创 单片机裸机编程中实用驱动分享
本篇文章编写的目的是为了记录个人在github上看到的优秀的代码模块,同时自己也是有在日常中使用,在这里分享给读者们,感谢github上大佬优秀的代码分享,在这里表示敬仰!!!一个支持多种组合按键的驱动程序FlexibleButton 是一个基于标准 C 语言的小巧灵活的按键处理库,支持单击、连击、短按、长按、自动消抖,可以自由设置组合按键,可用于中断和低功耗场景。该按键库解耦了具体的按键硬件结构,理论上支持轻触按键与自锁按键,并可以无限扩展按键数量。另外,FlexibleButton 使用扫描的.
2021-09-03 15:14:18
611
原创 Gsteamer播放MP4文件
以mp4视频文件的播放为例子介绍gstreamer基于gst-launc-1.0以及代码形式如何实现MP4视频文件播放.
2024-05-13 20:28:09
1707
原创 gstreamer插件开发-What are states?
请注意,向上(NULL=>READY, READY=>PAUSED, PAUSED=>PLAYING)和向下(PLAYING=>PAUSED, PAUSED=>READY, READY=>NULL)状态变化是在两个单独的块中处理的,向下的状态变化只有在我们链接到父类的状态变化函数之后才能处理。这样做的原因是,在向下状态变化的情况下,你不想破坏分配的资源,而你的插件的链函数(例如)仍然在另一个线程中访问这些资源。你的链式函数是否在运行取决于插件的垫的状态,而这些垫的状态与元素的状态密切相关。
2023-11-29 19:42:16
1275
原创 图像对比方法介绍及实现
图像对比是在计算机视觉和图像处理中常见的任务之一。它可以用于识别重复图片、图像搜索、图像相似性比较等应用场景。实现图片对比方法的方法有多种,根据不同的需求和图片类型,可以选择适合的实现方案。如果对于简单的图片对比需求,可以选择基于像素比较或直方图比较的方法;如果对于复杂的图片对比需求,可以选择基于特征提取和匹配或深度学习模型的方法。
2023-11-08 22:12:46
16945
原创 gstreamer插件开发-Adding Properties
而且在属性的定义中使用非常描述性的(更好的是:国际化的)字符串,如果可能的话使用枚举和标志而不是整数。如果应用程序更改或请求属性的值,这些函数将得到通知,然后可以填充值或采取所需的操作来在内部更改该属性的值。图形化应用程序将使用这些属性,并将显示一个用户可控制的小部件,这些小部件可用于更改这些属性。您可能还希望保留一个实例变量,其中包含您在get和set函数中使用的属性的当前配置值。注意,GObject不会自动将实例变量设置为默认值,您必须在元素的_init()函数中这样做。
2023-10-26 10:13:49
254
原创 gstreamer插件开发-The query function
通过查询函数,元素将接收它必须回复的查询。这些查询包括位置、持续时间,以及元素支持的格式和调度模式。查询可以在上游和下游传递,因此您可以在汇聚节点和源节点上接收它们。对于未知查询,调用默认查询处理程序gst_pad_query_default()是一个好主意。根据查询类型,默认处理程序将转发查询或简单地unref它。下面是一个非常简单的查询函数,我们将它安装在元素的源目录上。
2023-10-26 10:10:46
156
原创 gstreamer插件开发-The event function
对于未知事件,调用默认事件处理程序gst_pad_event_default()是个好主意。根据事件类型,默认处理程序将转发事件或简单地取消它。CAPS事件在默认情况下是不转发的,因此我们需要在事件处理程序中自己执行此操作。event函数通知您数据流中发生的特殊事件(如大写、流结束、新段、标记等)。事件可以在上游和下游传播,因此您可以在汇聚节点和源节点上接收它们。下面是一个非常简单的事件函数,我们将其安装在元素的接收器上。
2023-10-26 10:10:04
163
原创 gstreamer插件开发-Building a Test Application
通常,您会希望在尽可能小的设置中测试新编写的插件。如果你的插件基于gst-plugin模板,那么这看起来就像gst-launch-1.0——gst-plugin-path=$HOME/gst-template/gst-plugin/src/。您可以使用gst_element_factory_make()创建元素,其中第一个参数是您想要创建的元素类型,第二个参数是自由格式的名称。最后的示例使用了一个简单的文件源-解码器-声卡输出管道,但如果有必要,您可以使用特定的调试元素。
2023-10-26 10:03:56
293
原创 gstreamer插件开发-Specifying the pads
Specif在element _init()函数中,您从pad模板创建pad,该pad模板已经在_class_init()函数中的元素类中注册。创建pad之后,必须设置一个_chain()函数指针,它将接收和处理sinkpad上的输入数据。如前所述,pad是数据进出元素的端口,这使得它们在元素创建过程中成为非常重要的项。在样板代码中,我们已经看到了静态pad模板如何将pad模板注册到元素类中。在这里,我们将看到如何创建实际的元素,使用_event()函数来配置特定的格式,以及如何注册函数来让数据流过元素。
2023-10-26 10:00:08
130
原创 音视频入门知识-- --相关名词、术语、概念
音视频相关名词、术语、概念1.帧率每秒中显示帧数,表示图形处理器处理场每秒能更新的次数。高帧率就会更流畅、逼真。一般来说30fps就可以接受了。注意:如果帧率超过屏幕的刷新率,就只会浪费图像处理器的能力,因为如果屏幕不能以那么快的速度更新,那么超过屏幕刷新率的帧率就会被浪费。2.刷新率指屏幕每秒画面被刷新的次数。刷新率分垂直刷新率和水平刷新率,一般都指垂直刷新率。垂直刷新率表示屏幕上图像每秒重绘的次数,即每秒屏幕刷新的次数。刷新率越高,图像就越稳定,图像显示也就越自然清晰,对眼睛影响也越小。相反如果
2022-05-11 23:10:59
808
原创 步进电机工作原理
什么是步进电机 步进电机是将电脉冲信号,转变为角位移或线位移的开环控制电机,又称为脉冲电机。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响。当步进驱动器接收到一个脉冲信号时,它就可以驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”。步进电机的组成步进电机组成最主要的就是转子和定子部分定子,就是由电流控制磁场方向,满足安培右手螺旋定律,步进电机的电流流过定子产生磁场的过程叫做励磁。转子,被定子环绕在中间受定子磁场变化产生转动步进电机的原理
2022-05-10 23:14:01
21497
1
原创 Cortex M0软件复位方法
Cortex M0软件复位方法uint32_t *AIRCR = (uint32_t *)0xE000ED0C;*AIRCR = (0x000005FA<<16)|(1<<2);
2021-09-03 14:54:26
1651
原创 C语言内存分配相关知识
一,内存分配1,内存分配的类型:在C/C++中内存分为5个区,分别为栈区、堆区、全局/静态存储区、常量存储区、代码区。静态内存分配:编译时分配。包括:全局、静态全局、静态局部三种变量。动态内存分配:运行时分配。包括:栈(stack): 局部变量。堆(heap): c语言中用到的变量被动态的分配在内存中。(malloc或calloc、realloc、free函数)2.变量的内存分配:栈区(stack):指那些由编译器在需要的时候分配,不需要时自动清除的变量所在的储存区,如函数执行时,函数的形参以及
2021-09-03 14:52:29
605
原创 操作系统知识杂记
一、进程和线程的区别?什么时候用进程?什么时候用线程?进程是指在系统中正在运行的一个应用程序;程序一旦运行就是进程,或者更专业化来说:进程是指程序执行时的一个实例。线程是进程的一个实体。进程——资源分配的最小单位,线程——程序执行的最小单位。线程进程的区别体现在几个方面:因为进程拥有独立的堆栈空间和数据段,所以每当启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这对于多进程来说十分“奢侈”,系统开销比较大,而线程不一样,线程拥有独立的堆栈空间,但是共享数
2021-09-03 14:51:05
150
原创 IIC通讯协议与EEPROM简介
IIC简介IIC总线(Inter-Integrated Circuit)即集成电路总线,是Philips公司设计出来的一种简单、双向、二线制、同步串行总线。I2C串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。所有接到I2C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。IIC总线是一个多向控制总线,多个器件(从机)可以同时挂载到一个主机控制的一条总线上。每个连接在总线上的设备都是通过唯一的地址和其他器件通信,主机和从机的角色可互换,
2021-09-02 09:31:36
3685
原创 C语言——按照指定分割符分割字符串
函数作用 : 分割字符串/*********************************************************************** Function: split_str* Description: Splits the target string by the specified character * Input: psrc: Pointer to the data to be processed psrc_len: The length
2021-03-04 20:08:24
3331
3
原创 云服务器搭建MQTT消息代理EMQX
阿里云服务器免费获取2月方法免费获取阿里云服务器免费获取2月需要你是学生身份并且注册账号进行学生验证即可申请领取。领取你需要通过一次考试和体验,按提示做就行。领取地址点击此处进入如下界面通过体验和测试之后即可点击领取,按照自己的需求选取操作系统,我选的是Ubuntu18.04,点击购买结算即可。支付成功后点击前往控制台点击概述就能看到自己的购买的实例点击实例,然后重置实例密码重置完重启实例即可重启后进行安全组配置,配置规则可以手动添加以及快速添加。你需要用到那些端口就配置就行,
2020-12-24 21:23:55
1561
11
原创 Zigbee常见错误问题汇总
Flash Programer 给CC2530下载Hex文件 error解决办法 汇总错误提示:HEX file content at address 0x4A390 exceeds chip’s 256 kB flash size解决办法找到 f8w2530.xcl文件并打开,找到以下两行被注释的代码取消注释:// Include these two lines when generating a .hex file for banked code model:(生成Hex文件需要包含两行)
2020-12-24 21:14:30
1798
原创 Source Insight 4.0 安装过程及简单使用
Source Insight 4.0 安装简单使用及常见问题解决第一步:安装 安装sourceinsight4.0
2020-12-16 10:18:53
17413
转载 C++ 面向对象的三大特性和五个原则
面向对象的三大特性:封装、继承、多态封装就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。继承指可以让某个类型的对象获得另一个类型的对象的属性的方法。它支持按级分类的概念。继承是指这样一种能力:它可以使用现有类
2020-11-30 19:37:38
260
原创 C/C++之extern“C“
extern"C"包含双重含义,从字面上即可得到:首先,被它修饰的目标是“extern”的;其次,被它修饰的目标的是“C”的。让我们来详细解读这两重含义。被extern"C"限定的函数或变量是extern类型的:extern 是 C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。记住,下列语句:extern int a;仅仅是一个变量的声明,其并不是在定义变量 a,并未为 a 分配内存空间。变量 a 在所有模块中作
2020-10-23 15:59:38
230
原创 C/C++ new/malloc 指针与引用的区别
1 、new和malloc的区别new、delete是C++中独有的操作符,而malloc和free是C/C++的标准库函数使用new创建对象在分配内存的时候会自动调用构造函数,同时也可以完成对对象的初始化,同理要记得delete也能自动调用析构函数。因为malloc和free是库函数而不是运算符,不在编译器控制范围之内,所以不能够自动调用构造函数和析构函数,也就是malloc只是单纯地为变量分配内存,free也只是释放变量的内存。new返回的是指定类型的指针,并且可以自动计算所申请内存的大小,而m
2020-10-23 11:19:54
405
转载 进程间的五种通信方法
原文链接https://www.cnblogs.com/zgq0/p/8780893.html进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC一、管道管道,通常指无名管道,是 UNIX 系统IPC最古老的形式。1、特点:它是半双工的(即数据只能在一个方向上流动
2020-10-22 16:13:49
1064
原创 嵌入式面试题之单片机知识
单片机IO口开漏输出和推挽输出有什么区别?推挽输出:既可以输出低电平,也可以输出高电平,可以直接驱动功耗不大的数字器件。导通损耗小、效率高、既提高电路的负载能力,又提高开关速度。开漏输出:输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行,适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内)单片机里定时器有什么作用和优势?1.可以用做精确延时处理,比较延时1ms时间2.可以当做计数器,比如将这个功能IO口接到一个时钟源,可以统计有多少个脉冲信号3.输入捕获(解码和测量时间间
2020-10-22 09:38:09
5764
1
原创 C语言面试代码题
用一个宏函数实现交换两个数#define SWAP(x,y) (x)=(x)+(y);(y)=(x)-(y);(x)=(x)-(y);用一个宏函数实现输出两个数的最大值#define MAX(x,y) ((x)>(y)?(x):(y))用一个宏函数实现输出两个数的最小值#define MIN(x,y) ((x)>(y)?(y):(x))用一个宏函数实现求数组元素个数#define NTBL(array) (sizeof(array)/sizeof(array[0]))宏
2020-09-27 10:21:14
420
原创 链表反转
输入一个链表,反转链表后,输出新链表的表头。#include <iostream>#include <cstdlib> using namespace std; struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};class Solution{public: ListNode *ReverseList(ListNode*
2020-09-26 20:57:50
166
原创 快速编写简单Makefile
Makefile文件语法规则目标:依赖文件集合 命令1 命令2命令列表中的每条命令必须以TAB键开始,不能使用空格第一条规则的目标成为默认目标 例如mainmain: main.o input.o calcu.o gcc -o main main.o input.o calcu.omain.o:main.c gcc -c main.cinput.o:input.c gcc -c input.ccalcu.o:calcu.c gcc -c calcu.cclean: rm
2020-09-26 20:54:41
709
原创 Ubuntu18.04的网络配置(静态IP和动态IP)
网络配置首先打开虚拟网络编辑器进行配置,会加载几秒钟点击更改设置选择添加网络,添加一个Vment0,并设置为桥接模式,桥接到 处设置为自动即可,如下图所示将网络适配器设置为桥接状态网卡与DNS配置打开命令窗口(右键单机桌面选择Open Terminal或者Ctrl+Alt+T),输入ip a查看自己的网卡编号(这里网卡编号每个人的可能不一样)说明Ubuntu从17.10开始,已放弃在/etc/network/interfaces里配置IP地址,即使配置也不会生效,而是改成net
2020-09-05 09:56:21
1163
原创 温湿度传感器(AM2312)
AM2321介绍AM2321湿敏电容数字温湿度模块是一款含有己校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电容式感湿元件和一个高精度测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在单片机中,传感器内部在检测信号的处理过程中要调用这些校准系数。标准单总线接口,使系统集成变得简易快捷。
2020-08-23 19:47:29
3908
4
toolkit-master.zip
2021-09-02
FlexibleButton-master.zip
2021-09-02
NXP ZigBee 3.0协议栈用户手册(全中文)API大全
2020-09-27
淘宝618自动获取喵币
2020-06-02
51单片机实现电子闹钟(1602+DS18B20+EEPROM+蜂鸣器+时钟模块)
2020-05-06
java实现学生成绩管理系统(含数据库以及实验报告)
2020-05-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人