我在串口一的接收中断中只写了一句检测发送是否完成的函数,如下所示:
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))就一切正常了。
请前辈们指点一下,谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>