该中断会在RX总线从busy状态转换到free状态时被触发,也就是只有接收到数据后连续一个数据帧时间内不再有数据发送过来的时候触发,常用于判断单次数据接收完成。中断使用方法:
注意看手册说明,中断标志位由硬件触发,软件清零,清零方法时读取一遍USART_SR寄存器然后读取一遍USART_DR寄存器,也就是不能简单的用USART_ClearITPendingBit()来清除就完事。
void USARTx_IRQHandler()
{
if(USART_GetITStatus(USART1,USART_IT_IDLE) != RESET)
{
USART_ClearITPendingBit(USART1, USART_IT_IDLE);
USART_ClearFlag(USART1,USART_FLAG_IDLE);
USART_ReceiveData(USART1);
// Handler code
}
}