GD32E23x的USART被断点打断后重新运行,会一直进入中断的问题
GD32E230K8单片机USART0连接一个从机芯片,该芯片每100ms发来一串16Bytes的数据,MCU中断接收,没有开启FIFO
只开启了RBNE(接收缓存非空)中断。
在进行DEBUG时,全速运行,没有问题
打断点或单步调试时,会中断串口接收中断
此时再全速运行,会发现CPU被串口中断占据,无法正常运行其他代码
检查中断标志,非RBNE
经过一段时间查找原因,发现USART_STAT中的ORERR被置位,频繁进入中断,应该和这个位有关
解决方法1:
只修改串口中断函数,检查USART_STAT中的ORERR是否被置位,如果是,则把 USART_INTC 中的OREC写1(清零USART_STAT的ORERR位)
也可以顺便检查 USART_STAT中的低 4 bits,如果有置位,也可以一起清零( USART_INTC 写1清零)
if(USART_STAT