关于stm32F4的HAL_UART_Receive_IT和HAL_UART_Transmit一起用就出问题。

我原有的例程中,一直用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

生成海报
点赞 0

Zln4ever

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

STM32F103串口DMA收发标准库

DMA方式可以节约CPU资源,不用像串口查询或中断方式处理数据时需要按下暂停键,处理完才接着往下走,反正牛X就是了。但我得提一句,如果用的不是ST的MCU。有可能会导致芯片运行不了这个串口DMA配置的程

STM32通用定时器的个人总结

STM32104ZET6系列的芯片中,定时器一共有一下三种分类: 高级定时器,通用定时器,基本定时器。 这里主要讲一下通用定时器,首先,计数器模式一共有三种&