用STM32的串口中断接收数据流时,偶尔会出现死机现象 ,查找原因和资料发现,开启串口中断接收 USART_ITConfig(USART2, USART_IT_RXNE, ENABLE) 时,同时也打开了串口ORE中断。一般大家都是在中断服务程序中判断USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)时来接收数据,这样会在接收大量数据流时,会出现死机现象,就是一直处于串口中断状态。后把串口接收中断服务程序改成如下程序,成功解决死机现象。
void USART2_IRQHandler(void)
{
if ((USART_GetFlagStatus(USART2, USART_FLAG_ORE) != RESET)||USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)
{
USART_ClearITPendingBit(USART2, USART_FLAG_ORE);
USART_ClearITPendingBit(USART2,USART_IT_ORE); //清除中断标志
buff =USART_ReceiveData(USART2); //读取接收到的数据
.................
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>