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

我原有的例程中,一直用HAL_UART_Receive_IT开启接收,且在中断接收单字节数据,这样做的优点是我可以自定义接收不同长度的数据帧,并且便于解析。缺点就是每个字节进入一次中断很低效。而且最近遇到个问题,在用HAL_UART_Transmit持续发数据时,会出现接收数据丢帧的情况,导致逻辑不能完成。故现在将中断接收改为DMA接收,解决了这个问题。

1.下图为中断服务函数

2.下图为回调函数内容

 3.串口的资源配置

 4.DMA初始化  一定要在串口初始化前面,否则就会发现每次只能接收到1个字节

猜你喜欢

转载自blog.csdn.net/saixuncha6897/article/details/122309864