阿波罗F767串口中断程序为啥需要超时处理?没有这个超时处理就没法实现中断为什么??求助,谢谢

2019-07-20 13:51发布

void USART1_IRQHandler(void)                       
{
        u32 timeout=0;
    u32 maxDelay=0x1FFFF;
       
        HAL_UART_IRQHandler(&UART1_Handler);        //调用HAL库中断处理公用函数
       
        timeout=0;
    while (HAL_UART_GetState(&UART1_Handler)!=HAL_UART_STATE_READY)//等待就绪
        {
        timeout++;////超时处理
        if(timeout>maxDelay) break;               
        }
     
        timeout=0;
        while(HAL_UART_Receive_IT(&UART1_Handler,(u8 *)aRxBuffer, RXBUFFERSIZE)!=HAL_OK)//一次处理完成之后,重新开启中断并设置RxXferCount为1
        {
        timeout++; //超时处理
        if(timeout>maxDelay) break;       
        }

}
       

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。