关于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——4、中断exti

这里是基于正点原子开发板的学习记录。 首先你要加入固件库 stm32f10x_exti.h 和 stm32f10x_exti.c 1、STM32中每个io口都可以作为外部中断的中断输入口。 2、STM32F103的中断控制器支持19个外部中断/

STM32的GPIO端口

GPIO:General Purpose Input & Output STM32芯片最拥有GPIOA、GPIOB…GPIOG等7组端口,每组端口最多拥有Pin0、Pin1…Pin15共16个引脚。 STM32的每个

STM32外部中断控制LED灯

EXTI简介 EXTI是外部中断控制器,管理了控制器的20个中断/事件。每个中断/事件都对应一个边沿检测器,可以实现输入信号的上升沿检测和下降沿检测。EXTI可以实现对每个中断/事件进行单独配置。 EXTI功能框