关于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

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

暂无评论

发表评论

相关推荐

STM32 HAL库学习笔记-(SPI驱动ADXL345)

STM32 HAL库学习笔记-(SPI驱动ADXL345) 最近有项目需要需要用到ADXL345,网上转了一圈都是IIC驱动为主,正好最近在学习HAL库,所以本文将使用SPI驱动ADXL345 CU

STM32学习(3)

这周学习了STM32的一些外设的使用,包括ADC和DAC,I2C和SPI,以及相应的一些实验,例如外部中断实验,串口通信实验,SPI通信实验,掌握

STM32F4+SRAM+FREERTOS+DMA+JPEG串口图传

功能描述:基于正点原子探索者开发板的串口图传,将十六进制图片通过串口传输到单片机并通过LCD显示(使用FREERTOS) 一、使用STM32cubeMX生成初始化代码 1、时钟配置&#