没有串口数据,也进串口中断,导致程序异常。仿真后发现是ORE中断,即溢出中断。查找资料后得出如下程序最后在串口中断程序进入的开头就添加
void USART1_IRQHandler(void)
{
if (USART_GetFlagStatus(USART1, USART_FLAG_ORE) != RESET){
//注意!不能使用if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)来判断
USART_ClearITPendingBit(USART1, USART_FLAG_ORE);
res = USART_ReceiveData(USART1);
}//正在处理上一条通讯,接收到数据不处理
if(USART_GetFlagStatus(USART1,USART_FLAG_RXNE) == SET){
....
}//接收数据
}
附网上的此问题的资料:
http://bbs.21ic.com/icview-300554-1-1.html
http://www.61ic.com/Technology/embed/201305/48590.html |