最近接了一个项目,需要用到RS485总线同时和多台机器通信,方式是半双工,但是当向总线一次发送大量数据的时候,STM32就会像出现死机一样,经过调试发现串口在既不是接收数据中断,也不是发送数据中断的情况下不断进入串口中断,当时瞬间怀疑的是:串口产生了什么错误导致一直进入中断。
经过调试和查找资料得出如下解决办法:
在串口中断中添加如下语句:
if(USART_GetFlagStatus(USART1,USART_FLAG_ORE!=RESET))
{
USART_ClearFlag(USART1,USART_FLAG_ORE);
USART_ReceiveData(USART1);
}