
C语言
文章平均质量分 72
茫茫人海中,我欣赏你
白云,轻飘飘的、很放松、很快乐。
展开
-
串口DMA发送&接收不定长数据--易移植和修改的C语言代码
实际项目应用中,对于串口通信速率很快的接收,在不知道多少字节为一帧数据时,处理不好会存在数据的丢失。对于一次性要发送很长的数据,一直让CPU去处理,会造成其他功能处理进入瘫痪。针对这类场景,编写了一份便于移植的应用层代码,对串口数据的收发,提供一个处理框架。这套源码属于应用层,驱动层需根据不同平台来实现,后面以stm32 + cubemx来实现驱动层。整个应用层有4个文件,分别是dev_uart.c、dev_uart.h、dataqueue.c和dataqueue.h。原创 2022-09-21 18:09:22 · 3067 阅读 · 0 评论 -
EasyFlash源码分析记录
记录分析EasyFlash源码V4.1.0的过程所想。实际嵌入式项目中,flash的使用是必不可少的,好的flash存储框架有利于进行数据的存储和读取,虽然现在的flash擦写寿命已经很长了,但是带有擦写平衡的应用方式,有利于增加存储数据的可靠性,为了应用这个源码无bug,尽量熟悉源码的实现。...原创 2022-08-17 18:30:20 · 1186 阅读 · 1 评论 -
rt-link源码笔记,适用于自定义点对点的通信协议
适用于自定义通信协议的开源库原创 2022-08-11 20:05:41 · 2061 阅读 · 1 评论 -
IIC从机有响应,但是从机的寄存器内容读写有问题的可能原因
模拟IIC原创 2021-12-02 18:15:08 · 3496 阅读 · 1 评论 -
单片机接收不定长的数据,最优解是DMA+串口空闲中断
如果单片机不支持串口空闲中断和DMA,可以参考之前写的,串口只用接收中断,完成不定长的分包。这里以stm32L4的单片机举例,思路可拓展到GD32等支持DMA和串口空闲中断的单片机。串口DMA接收,就是当串口有数据接收的时候,不会促发串口中断,等串口空闲后,(一帧数据包接收完成,硬件会自己保证)会促发一次串口中断,此时可以对一个完整的数据包进行处理。只开串口接收中断是每个字节都会促发一次串口中断服务函数,这样会让CPU多次执行,入栈出栈等多余操作,也不能保证,每次都正确分包接收到的数据,毕竟是软件时间原创 2021-11-09 17:29:41 · 1355 阅读 · 1 评论 -
关于stm32偷懒打印、节约代码空间、输出远程日志的想法
博主近日头疼与代码空间紧张,以及没有好的重定义去输出日志,思考后分享一些想法。适用于代码空间紧张,或者给客户终端的代码并不需要打印输出,节约应用程序的文件大小,使得OTA文件接收更快、提高执行效率等。可以采用宏定义的方式,重定义printf函数。很简单,在公共的头文件中,加入下面宏定义#define __DEBUG__ 1#if( __DEBUG__ )#define p(format,...) printf(format,##__VA_ARGS__)#else #define p(forma原创 2021-07-27 17:59:43 · 640 阅读 · 0 评论