STM32系列USART中断接受注意事项USART_IT_ORE

ZHL学习笔记@TOC
STM32系列USART中断接受注意事项USART_IT_ORE

1.USART_IT_ORE含义:接收溢出,尚未处理上一拍就迎来了下一拍数据;
2.USART_IT_ORE使能:该中断使能是在USART_IT_RXNE使能同时有效;
3.USART_IT_ORE检测:
1)在未开启USART_IT_ERR时,只能通过USART_GetFlagStatus(USARTx,USART_Flag_ORE)检测到;
2)开启USART_IT_ERR后,才能被USART_GetITStatus(USARTx,USART_IT_ORE)检测到;

正确的USART接收中断函数使用方法:

void USART2_IRQHandler(void)
{
u8 key = 0;
if(USART_GetITStatus(USART2,USART_IT_RXNE)!=Bit_RESET) //检查 USART 是否发生中断
{
USART_ClearITPendingBit(USART2,USART_IT_RXNE); // 清中断标志
key=USART_ReceiveData(USART2);
// save key at here.
}
if(USART_GetFlagStatus(USART2,USART_FLAG_ORE) == SET) // 检查 ORE 标志
{
USART_ClearFlag(USART2,USART_FLAG_ORE);
USART_ReceiveData(USART2);
}
}

作为比较,给出STM官方给出的范例

void USART2_IRQHandler(void)
{
u8 key = 0;
USART_ClearFlag(USART2,USART_FLAG_TC ); //清除中断标志
if(USART_GetITStatus(USART2,USART_IT_RXNE)!=Bit_RESET)//检查指定的usart是否发生了中断
{
key=USART_ReceiveData(USART2);
// do something at this;
}
}

你可能感兴趣的:(C)