问题:今天在调试stm32f407的时候,发现只要接收一次串口中断后,会一直死在串口中断中,明明已经通过USART_ClearITPendingBit(UART5,USART_IT_RXNE);清除中断标志位了,但是还是不进入中断,其DR寄存器中数据为零,源码如下,波特率为500000:
void UART5_IRQHandler(void)
{
u8 ResData=0;
if(USART_GetITStatus(UART5, USART_IT_RXNE) != RESET)
{
ResData=USART_ReceiveData(UART5);
AD_DataProcess(ResData,&ADToMainData);
USART_ClearITPendingBit(UART5,USART_IT_RXNE);
}
}
后来看了这两篇文章明白了原理,看来还是需要读手册
STM32串口中断卡死主循环一直进中断问题分析
STM32 串口中的硬件BUG,请注意!