关于卡死在串口接收中断问题

2019-07-20 08:53发布

我在串口一的接收中断中只写了一句检测发送是否完成的函数,如下所示:

void USART1_IRQHandler (void)
{       
#if SYSTEM_SUPPORT_OS
    OSIntEnter();
#endif
   if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)
   {
     while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);
   }
#if SYSTEM_SUPPORT_OS          
        OSIntExit();
#endif
}


这样写开机重启时有一定几率卡死在中断中是为什么?
在 while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET)前再加上一句USART_SendData(USART1,USART_ReceiveData(USART1))就一切正常了。
请前辈们指点一下,谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。