stm32stm32不进串口中断断接收数据被持续的外部中断会导致接收数据异常么

STM32 有时候会不断进入中断解决方法如下

1.串口初始化配置时,需要打开ORE 溢出中断如下红色代码所示

这样就可以解决,串口不断进入中断的问题

问题现象:STM32L432单片机MCU程序串口1接收中断方式,发送采用查询方式当使用SSCOM定时发送数据给MCU时,正常情况下MCU收到什么就会回什么数据。如果使用100ms发送MCU长时间测试都正常。如果使用1ms或者5ms发送数据给MCU会出现MCU出现异常,MCU无法再接收到数据接收中断也进不去。发送数据也无效通过设置断点,发现接收中断設置不成功的原因是gState值HAL_UART_STATE_BUSY_TX正常的时候应该是HAL_UART_STATE_READY。

问题原因:串口溢出中断(ORE)导致程序进步了接收中断

解决办法:(贴代码如下)

 

代码运行条件:(1) 大端发送;
(2) 上位机发送一帧数据的时间间隔不能大于主循环周期;

(3)数据帧满足下面格式: 

//这里可以根据类型的范围进行如上的处理 while(1)//该循环不能太慢否则数据缓冲区会被部分修改 //在以后再仔细分析数据接收较快而处理较慢的问题吧,本课题主要讨论的是如何完整的接收一个数據帧在数据源正确的情况下不丢帧

我要回帖

更多关于 stm32不进串口中断 的文章

 

随机推荐