- 博客(299)
- 资源 (18)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 freeswitch二、freeswitch之注册,呼叫接听测试
在上一篇文章中讲解了freeswitch的安装方法,安装完后测试了和数据库的交互,下面就要测试一下freeswitch的功能了。
2022-09-23 14:42:08
2309
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 ffmpeg中PTS和DTS
计算视频长度: time(秒) = st->duration * av_q2d(st->time_base) ffmpeg内部的时间与标准的时间转换方法: ffmpeg内部的时间戳 = AV_TIME_BASE * time(秒) AV_TIME_BASE_Q=1/AV_TIME_BASE av_rescale_q(int64_t a, AVRational bq, AVRational cq)函数 这个函数的作用是计算a*bq / cq来把时间戳从一个时间基调整到另外一个时间基。PTS和DTS的时间基。
2022-09-22 14:53:56
1500
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 linux下网卡多IP静态IP
修改/etc/network/interfaces# interfaces(5) file used by ifup(8) and ifdown(8)auto loiface lo inet loopbackauto eth0iface eth0 inet staticaddress 192.168.0.36netmask 255.255.255.0auto eth0:1iface eth0:1 inet staticaddress 192.168.10.46netmask 255
2022-04-15 17:38:19
214
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 freeswitch一、ubuntu16.04安装freeswitch以及ODBC使用mysql
安装freeswitch下载地址:http://files.freeswitch.org/freeswitch-releases/选择下载版本freeswitch-1.8.5.tar.gz ,下载完成后拷贝到/usr/local/src解压缩cd /usr/local/src 然后解压freeswitch-1.8.5.tar.gzsudo tar -xvf freeswitch-1.8.5.tar.gz先更新软件包sudo apt-get updatesudo apt-get instal
2022-04-06 19:31:07
2601
原创 QT常用高频快捷键
Ctrl + F 查找/替换当前选中的内容,对与所选内容一致的部分进行高亮显示。Ctrl+Shift+down(向下箭头) 整行向下移动。Ctrl+Alt+down(向下箭头) 当前行向下复制。Ctrl+Shift+up(向上箭头) 整行向上移动。Ctrl+Alt+up(向上箭头) 当前行向上复制。Shift+down(向下箭头) 向下选中代码。Shift+up(向上箭头) 向上选中代码。Ctrl + Shift + < 折叠代码块。Ctrl + Shift + > 展开代码块。
2024-07-18 14:04:00
113
原创 C语言中把数字转换为字符串
因为spritnf 是个变参函数,除了前面两个参数之外,后面的参数都不是类型安全的,函数更没有办法仅仅通过一个“%X”就能得知当初函数调用前参数压栈时被压进来的到底 是个4 字节的整数还是个2 字节的短整数,所以采取了统一4 字节的处理方式,导致参数压栈时做了符号扩展,扩展成了32 位的整数-1,打印时4 个位置不够了,就把32 位整数-1 的8 位16 进制都打印出来了。我们知道,在C/C++语言中,char 也是一种普通的scalable 类型,除了字长之外,它与short,
2024-07-11 16:31:22
820
原创 FreeRTOS开发五、任务状态切换以及空闲任务回收结束的任务
任务结束的时候,一定有其他任务给这个任务进行收尸,这个任务就是空闲任务,空闲任务会将结束的任务的内存等一些资源回收,空闲任务的优先级是最低的,这就会导致其他任务中如果一直保持就绪态和运行态,空闲任务无法运行,所以应该想办法让任务进入阻塞态等,也就是延时使用vTaskDelay。然后就是暂停任务vTaskSuspend,可以自己暂停自己,也可以其他任务暂停自己,这部分会直接导致任务进入暂停状态(suspend),此时任务不占用资源,也就是不占用cpu,这个任务暂停运行了。2、空闲任务回收结束的任务。
2024-07-01 23:09:26
211
原创 有人物联的串口服务器USR-TCP232-410S基本测试通信和使用方案(485串口和232串口)
1.将 410S(USR-TCP232-410S,简称 410S 下同)的串口通过串口线(或USB 转串口线)与计算机相连接,通过网线将 410S 的网口 PC 的网口相连接,检测硬件连接无错误后,接入我们配送的电源适配器,给 410S 供电。这里使用的485通信,那么就要配置波特率为115200,网络中的服务器IP为192.168.0.7(默认),端口一定要设置为26(前面网页设置的)点击“搜索设备”当搜索列表中出现410S的设备后,单击搜索到的设备,查看其配置信息(上图为默认配置信息)。
2024-06-28 10:59:00
396
原创 FreeRTOS开发四、任务
在裸机系统中,系统的主体就是 main 函数里面顺序执行的无限循环,这个无限循环里面 CPU 按照顺序完成各种事情。在多任务系统中,我们根据功能的不同,把整个系统分割成一个个独立的且无法返回的函数,这个函数我们称为任务。/* 任务主体,无限循环且不能返回 */for (;;/* 任务主体代码 */我们先回想下,在一个裸机系统中,如果有全局变量,有子函数调用,有中断发生。那么系统在运行的时候,全局变量放在哪里,子函数调用时,局部变量放在哪里,中断发生时,函数返回地址放哪里。
2024-06-19 14:17:11
306
原创 FreeRTOS开发三、FreeRTOSConfig.h内容介绍以及分析作用
【代码】FreeRTOS开发三、FreeRTOSConfig.h内容介绍以及分析作用。
2024-06-19 13:54:02
149
原创 stm32开发常用的数学函数
在MDK5的安装路径中:D:\MDK5\ARM\ARMCC\include,可以看到很多C库头文件,在程序中只要包含了相应的头文件,编译器就会自动把相应的代码编译链接进去。
2024-06-05 11:46:22
427
原创 HBuilderX编写APP二、获取数据代码以及如何打包发行app
3、下载矢量图的地方–阿里矢量图。1、修改app应用的名字。2、更换app的图标。
2024-06-04 15:25:30
309
原创 HBuilderX编写APP一、获取token
这个函数,就可以实现生成token了。然后运行到内置浏览器进行查看。1、下载之后的压缩包,解压。复制到刚才的目录下面去。就是onenet中的。
2024-06-04 11:47:56
349
原创 linux开发之设备树七、设备树下platform_device和platform_driver匹配
device和driver会通过名字进行匹配,匹配成功以后,会执行driver中的probe函数,在这个probe函数中就可以实现去device中取出硬件信息的方法了。设备树替换掉了device部分,也就是设备树也会被转换为platform_device,然后就会通过名字匹配driver,匹配成功后就是调用driver中的probe函数了,然后就是获取硬件信息。
2024-05-30 16:59:52
166
原创 linux开发之设备树六、linux下pinctrl子系统管理设置pin管脚的复用功能(一般原厂提供)
客户端的编写格式是固定的,不管哪家原厂的处理器,格式都是一样的对于服务端部分是原厂提供,各个芯片肯定就不一样了,主要在于编写的格式不同。
2024-05-30 10:53:40
170
原创 linux开发之设备树五、设备树描述中断实践
首先添加compatible属性:因为设备树替换的是device部分,而在driver部分要有相同名字的去进行匹配,匹配完成后,driver部分需要得到device部分的硬件信息,所以compatible这部分的名字不能随便去写。可以知道后面加入interrupts的时候需要两个参数,这里通过reg也可以知道地址等信息了。中断控制器这种资源一般都是通用的,所以都会放在dtsi文件当中。这里用了ft5x06的触摸芯片,然后I2C的地址为38。这里的引脚为RK_PB5,也可以根据上面的宏定义写13。
2024-05-29 14:15:55
192
原创 linux开发之设备树四、设备树中断节点
表示那个引脚作为中断引脚,低电平触发中断,这里有两个值,从上面的#interrupt-cells = ;首先gpio0是一个标签(可以理解为名字),gpio0@fdd60000是这个节点的名称,fdd60000是这个gpio0的寄存器地址,这个只是为了取名字,实际可能没有意义,具体还要看内部其他参数。在节点中出现gpio-controller说明这是一个gpio控制器,出现interrupt-controller代表这是一个中断控制器,同时出现是因为gpio引脚也可以作为中断使用。
2024-05-29 10:27:54
334
原创 linux开发之设备树三、基本语法二
上面的mmc0就是sdmmc0节点的别名这部分自定义,比如定义管脚标号,初始数值等为什么我们可以在设备树上自己定义属性呢?设备树文件描述的是硬件信息,具体这个硬件信息有什么用,如何用是由驱动决定的,设备树也是基于平台总线模型(platform总线模型),当驱动部分拿到了设备树的硬件信息以后,比如驱动在设备树属性中拿到了pinnum这个属性,也就是知道了芯片gpio管脚的信息,0-1-2-3-4等5个管脚标号,可以用也可以不用,但是驱动已经获取到了。
2024-05-28 17:13:01
152
原创 linux开发之设备树二、基本语法一
compatible属性定义了这么一个名字是led,在驱动中有一个led名字的驱动,就可以匹配成功,然后就会调用驱动的probe函数,然后再probe中获取reg的参数,就可以知道寄存器地址和长度了。gpio@22020101是这里的名字,也就是要用这个gpio,@符号后面的一串数字使用了这个gpio的寄存器地址,因为可能会用很多gpio,所以加入寄存器地址进行区分。实际就是描述在下面的子节点中的reg信息中地址的个数和长度的个数。就是寄存器的地址加寄存器的长度。包含子节点以及子子节点。
2024-05-28 14:22:57
219
原创 linux开发之设备树一、设备树基本概念
比如有两个开发板,都是用相同的芯片RK3568,虽然这两个板子不一样,但是芯片相同,所以会有很多相同的地方,这些相同的地方就由dtsi去描述,也就是dtsi描述芯片的东西,dts描述外设。dtsi:device tree source include的缩写 //通用的设备树源码。dtb:device tree blob的缩写//编译设备树源码得到的文件。dts:device tree source的缩写 //设备树源码。DT:Device Tree //设备树。
2024-05-28 11:06:14
428
原创 FreeRTOS开发二、如何使用vTaskDelay对任务延时准确的时间
即使同样的tick,如果系统工作的频率不同,那么其时间也是不一样的,如果A配置的频率是B的两倍,则使用相同tick时,B实际的时间是A的两倍。但是我们更多的是使用物理时间,例如一个简单的翻转,可能需要500ms,而不关心系统到底被配置为多少的频率,这个情况下,我们可以使用FreeROS提供的宏来实现,通常有两种方法,但是本质上是一样的。例如我们上面把500/portTICK_RATE_MS进行展开,其实就是。
2024-05-22 08:59:46
462
原创 FreeRTOS开发一、FreeRTOS移植
Source 文件夹:里面包含的是 FreeRTOS 内核的源代码,我们移植 FreeRTOS的时候就需要这部分源代码。Demo 文件夹:里面包含了 FreeRTOS 官方为各个单片机移植好的工程代码,FreeRTOS 为了推广自己,会给各种半导体厂商的评估板写好完整的工程程序,这些程序就放在 Demo 这个目录下,这部分 Demo 非常有参考价值。
2024-05-15 09:42:35
656
原创 stm32开发三、GPIO
部分引脚可容忍5V,容忍5V的意思是:可以在这个端口输入5V的电压,也认为是高电平但是对于输出而言,最大就只能输出3.3V,因为供电就只有3.3V具体哪些端口能容忍5V,可以参考一下STM32的引脚定义不带FT的,就只能接受3.3V的电压,这个我们在第一节也讲过在STM32中,所有的GPIO都是挂载在APB2外设总线业的st公司为了省电(低功耗),开发了一套时钟门控技术,必须启动时钟也就是RCC才能使用外设,所以无论使用stm32的任何外设,都需要先设置RCC时钟。
2024-05-10 15:52:40
497
原创 嵌入式Linux开发如何查看应用所链接的动态库
桌面linux的使用方法不赘述,网上资料有很多,对于嵌入式linux开发中,我们在ubuntu中使用ldd 是不行的。在开发中我们常常需要查看一个应用究竟链接了哪些对应的动态库。
2024-05-08 14:38:49
125
原创 Qt开机自启动
这段代码可以实现我们需要的功能,但是呢。有一个很重要的问题就是需要管理员权限才可以!对于使用MINGW32编译器的时候,使用管理员权限非常麻烦。但是不要紧,有一个办法既不要管理员权限,也可以实现开机自启。,写入这里是不需要管理员权限的。对之前的代码稍微更改注册表路径修改为。仅仅对当前用户有效。
2024-05-08 14:35:57
108
原创 stm32单片机开发六、SPI通信协议
上一节看到了,I2C使用上拉电阻,导致了整个电路从低到高电平的时候出现了延时爬升,就会导致I2C的频率不高,一般在100K,告诉400K但是SPI的速率可以达到很高,这就是SPI的优势SS,从机选择线,它可能不止一条,SPI主机表示,有几个从机,就开几条SS,所有从机,一人一根都别抢,需要从机时就控制连接从机的那根SS线,低电平使能,高电平失效,这样就不需要再去弄什么寻址一类的了SPI没有应答这部分,只管发送和接受,至于对面的从机是否存在,SPI是不管的。
2024-05-07 11:53:55
1009
原创 stm32单片机开发五、使用I2C连接MPU6050
10轴就是3轴加速度、3轴角速度、3轴磁场强度和1个气压强度任何一种传感器都不能获得精确且稳定的欧拉角,要想获得精确且稳定的欧拉角,就必须进行数据融合,把这几种传感器的数据结合起来,常见的数据融合算法,一般有互补滤波、卡尔曼滤波等I2C的地址为7位,假设这里将他的地址(110 1000)转换为16进制的0x68,一定不要忘记了在传输的时候要将0x68
2024-05-05 17:28:34
171
原创 stm32单片机开发五、I2C通信
这就需要首先把每个从设备都确定一个唯一的设备地址,从机设备地址就相当于每个设备的名字,主机在起始条件之后,要先发送一个字节叫一下从机名字,所有从机都会收到第一个字节,和自己的名字进行比较,如果不一样,则认为主机没有叫我,之后的时序我就不管了,如果一样,就说明,主机现在在叫我,那我就响应之后主机的读写操作,在同一条12C总线里,挂载的每个设备地址必须不一样,否则,主机叫一个地址,有多个设备都响应,那不就乱套了吗,是吧。I2C这部分的时序单元可以看我另外一篇博客。如何发出指令,来确定要访问的是哪个设备呢?
2024-05-05 14:30:23
315
原创 硬件25、电子原理图中VCC\VDD\VEE\VSS\VBAT等各表示什么意思
5、VBAT是当使用电池时或者其他电源连接到VBAT引脚上的时候,当VDD断电时,可以保存备份寄存器的内容,维持RTC功能,但是当没有使用电池时,VBAT应接到VDD引脚上。9、CC和DD的区别是供电电压和工作电压的区别,通常VCC大于VDD。7、GND通常和大地连接,电动势为0,通常定义为参考电压。3、VSS是公共连接的意思,通常指电路公共接地端电压。4、VEE是负电压供电,场效应管的源极。1、VCC代表了元器件外接电压。8、V和VA的区别,数字和模拟。6、VPP是编程/擦除电压。
2024-05-05 08:20:02
639
转载 编译linux开发板的第 1 个驱动实验
为什么编译驱动程序之前要先编译内核?⚫ 驱动程序要用到内核文件:比如驱动程序中这样包含头文件:#include ,其中的 asm 是一个链接文件,指向 asm-arm 或 asm-mips,这需要先配置、编译内核才会生成asm 这个链接文件。⚫ 编译驱动时用的内核、开发板上运行到内核,要一致:开发板上运行到内核是出厂时烧录的,你编译驱动时用的内核是你自己编译的,这两个内核不一致时会导致一些问题。
2024-04-29 11:00:07
32
转载 ubuntu配置VMware 使用双网卡之NAT 网卡上网、桥接网络连接开发板
配置 VMware 使用双网卡VMWare 设置为使用双网卡是最方便的:NAT 网卡:Ubuntu 通过它上网,只要 Windows 能上网,Ubuntu 就能上网桥接网卡:Ubuntu 通过它跟开发板联通NAT,Network Address Translation,指网络地址转换。使用 NAT 网卡时,Ubuntu 要访问外网,是委托 Windows 发出数据包,Windows 接收到回应后再转发给 Ubuntu。外界看到的都是 Windows,看不到 Ubuntu。
2024-04-29 10:07:22
412
原创 stm32单片机开发四、USART“串口通信“
使用上面的程序单片机进行串口发送,会发生什么情况?1、串口助手使用hex模式接收2、串口助手使用文本模式接收可以看到打印出来的是文本格式了。
2024-04-28 13:38:29
460
原创 stm32单片机开发三、ADC、DMA
再看一下连续转换,扫描模式,与上一个模式相比就是一次转换完成后,立刻开始下一次的转换,和上面这里非扫描模式的单次和连续是一个套路,这就是连续转换,扫描模式,当然在扫描模式的情况下,还可以有一种模式,叫间断模式,它的作用是,在扫描的过程中,每隔几个转换,就暂停一次,需要再次触发,才能继续,这个模式我没有列出来,要不然模式太多了,大家了解一下就可以了,暂时不需要掌握,第三步,配置这里的多路开关,把左边的通道接入到右边的规则组列表里,这个过程就是我们之前说的点菜,把各个通道的菜,列在菜单里。
2024-04-28 11:37:59
468
原创 stm32单片机开发二、TIM定时器-内部时钟中断和外部时钟中断、编码器
定时器本质就是一个计数器定时器的功能:1、定时器基本定时的功能,也就是定一个时间,然后让定时器每隔这个时间产生一个中断,来实现每隔一个固定时间执行一段程序的目的,比如你要做个时钟、秒表,或者使用一些程序算法的时候,都需要用到定时中断的这个功能2、定时器输出比较的功能,输出比较这个模块最常见的用途就是产生PWM波形,用于驱动电机等设备,使用STM32输出的PWM波形,来驱动舵机和直流电机的例子3、定时器输入捕获的功能,使用输入捕获这个模块来实现测量方波频率的例子。
2024-04-28 09:33:08
343
原创 stm32单片机开发一、中断之外部中断实验
stm32单片机的外部中断和定时器中断、ADC中断等都由stm32的内核中的NVIC模块控制,stm32的中断有很多中,比如供电不足中断,当供电不足时,会产生的一种中断,这么多中断如果都接在CPU上,或者说CPU去处理,一定会占用过多的资源,所以stm32单片机设计了NVIC去管理这些中断,NVIC有很多输入口,所有的中断都会进入NVIC,NVIC判断每个中断的优先级分配中断的先后顺序,最后将筛选出来的这个中断交给CPU去运行处理,这样CPU只需要去做处理就可以了。
2024-04-27 16:27:43
1106
原创 硬件24、嘉立创EDA丝印的优化和调整
依然还是前面的选中一个丝印,然后右键选择查找,然后在弹出的界面选择查找全部,然后在右侧属性部分修改线宽和高度。这样所有的丝印都会设置为这个属性,如果单独的一个丝印需要修改可以直接选择这个丝印去修改。如果铺铜后去调整丝印的时候,发现选不中丝印的问题,就去。然后修改全部的丝印的属性(线宽、高度这些)这个时候可以设置所有丝印在元件的位置了,中设置,将铺铜、导线等属性屏蔽掉,只选择。,这时丝印就会设置在元器件的上方位置。选项,这个时候可以看到只能选中丝印了。可以看到丝印都出现在了元器件的上边。
2024-04-26 16:58:17
1880
原创 硬件23、嘉立创EDA铺铜时设置禁止区域然后对GND铺铜以及滴泪
铺铜后打开对GND网络的显示,查看是否还有GND没有铺上,因为有可能有的GND被孤岛包围,铺铜不能将GND全部铺上,这时可以用导线进行连接。网络间距就是铺铜和网络之间的距离,比如铺铜和3V3之间的距离,到边框/槽孔间距就是铺铜和板子边框或者铺铜和槽孔的间距。将不需要铺铜的地方一点一点圈起来,下面就是禁止铺铜区域在铺铜后的效果。重新铺铜:选中铺铜区域,右键鼠标,选择铺铜区域,选择重建全部。设置完铺铜属性,然后选择重新铺铜就可以将铺铜刷新了。铺铜后的效果,将GND连起来了。同样的在底层也来一次铺铜。
2024-04-26 16:08:21
2517
嵌入式linux搭建nfs服务器必备的两个工具:nfs-utils,portmap,以及S60nfs文件
2023-05-31
linux下多线程服务器编程
2022-07-28
Qt写的支持多个客户端连接的服务器
2022-07-20
pjsip的一个qt写的demo
2022-07-16
飞腾上银河麒麟编译qt5.9.8,使用aarch64-linux-gnu-g++,可以在飞腾直接编译,也可交叉编译
2022-07-15
Qt自定义弹窗,可阻塞,可以点击确定和取消并且两个按键可以做不同操作,界面可根据需求修改
2022-06-17
Qt在linux和windows通过QStorageInfo类来获取某个特定磁盘信息,包括大小
2022-06-13
pjsip库的头文件文件夹
2022-04-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人