关于STM32的串口中断

2024-11-08 14:08:35
推荐回答(2个)
回答(1):

串口中断处理代码中一定要先加这样的判断,否则可能因出错而导致串口死循环
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
temp = USART_ReceiveData(USART1); // 读取状态后必须紧跟着读取缓冲数据
......
}

USART_ReceiveData(USART1); // 确保读取状态后能紧跟着有读缓冲数据的动作

就是要保证在中断里一定先读SR再读DR这样的一个完整序列,才能清除串口的各种出错状态,这是STM32清串口状态特有的,编写STM32串口程序应该特别注意的。

回答(2):

中断优先级就是说当有两个中断同时到来时,或者中断嵌套的时候,优先处理优先级高的中断。
一个中断通常需要两个设置,一个是使能相应的中断,还有一个就是设置中断向量。