STM32 USART的RXNEIE不能置位或无法置位的原因(非QRE)

使用的芯片是STM32F030K6.CUBEMX生成代码。调试例程为每隔一段时间采集AD数据和传感器数据,并且每隔2.5秒串口打印采集的数据。同时,串口接收上位机命令并作出相应动作。

偶尔发现运行过程中UART无法进入接收中断。无法进入中断后,uart一直能发送采集的数据。经过多次复现问题发现:当MCU在发送数据和接收数据在时间上比较接近或者同时的时候,此问题必出。搜索网上有一篇文章描述的问题现象和我遇到的问题非常类似,原因为QRE过载错误。但是我查看uart寄存器并没有发现QRE置位,并通过在所有设置QRE的语句打断点的方式确认QRE的确没有置位,所以我遇到的这个问题另有原因。

UART在无法进入中断后,其寄存器的RXNEIE位和EIE位没有被置位,因而无法进入接收中断。RXNEIE置位发生在HAL_UART_Receive_IT()中,这个函数又在USART1_IRQHandler()中。

图片.png

这个问题,暂时没有想到方法解决。望大家不吝赐教。

已邀请:

yuan123456

赞同来自:

近期也有遇到过类似的情况,最后发现是晶振的问题

吉跃华

赞同来自:

楼主这个问题的原因找到了吗?我遇到的问题和你一模一样,程序功能和流程也几乎一模一样。

找了好长时间了,问题还没找到呢!

要回复问题请先登录注册