我原有的例程中,一直用HAL_UART_Receive_IT开启接收,且在中断接收单字节数据,这样做的优点是我可以自定义接收不同长度的数据帧,并且便于解析。缺点就是每个字节进入一次中断很低效。而且最近遇到个问题,在用HAL_UART_Transmit持续发数据时,会出现接收数据丢帧的情况,导致逻辑不能完成。故现在将中断接收改为DMA接收,解决了这个问题。
1.下图为中断服务函数
2.下图为回调函数内容
3.串口的资源配置
4.DMA初始化 一定要在串口初始化前面,否则就会发现每次只能接收到1个字节
版权声明:本文为CSDN博主「Zln4ever」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/saixuncha6897/article/details/122309864
暂无评论