STM32F030x 中断串口注意事项
一、总进UART中断
1、问题描述:
没有发数据,但接收中断中,打开串口接收中断后,每次只能接收第一个字节数据,第二个字节就会产生ORE溢出,然后就一直在中断里面循环出不来了,
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)
{
RxData = USART_ReceiveData(USART2);
USART_ClearFlag(USART2,USART_FLAG_RXNE);
}
每次可以到if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)
这一句,但是到不了RxData = USART_ReceiveData(USART2);这一句。也就是进入了中断。
2、解决方法
在中断最前面加上,一定要前面加,加在后面无效,不理解,反正这样就可以。
if((USART1->ISR & USART_ISR_ORE) == USART_ISR_ORE){
USART1->ICR = USART_ICR_ORECF;/* clear OverRun flag */
}