阿波罗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;       
        }

}
       

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
taizonglai
1楼-- · 2019-07-20 15:37
 精彩回答 2  元偷偷看……
你恒哥
2楼-- · 2019-07-20 16:07
 精彩回答 2  元偷偷看……
caosix
3楼-- · 2019-07-20 21:20
你恒哥 发表于 2017-6-19 16:28
F103不需要不也没事?

F103 估计 没有使用 “流串” 处理方式。

F767 HAL 库 已经固定使用了 “流串”。
taizonglai
4楼-- · 2019-07-21 00:34
 精彩回答 2  元偷偷看……
你恒哥
5楼-- · 2019-07-21 04:41
caosix 发表于 2017-6-19 16:45
F103 估计 没有使用 “流串” 处理方式。

F767 HAL 库 已经固定使用了 “流串”。

感觉好专业,还没达到你们的程度,但是我调试了,只要没有超时处理肯定死机。
caosix
6楼-- · 2019-07-21 07:16
你恒哥 发表于 2017-6-19 17:31
感觉好专业,还没达到你们的程度,但是我调试了,只要没有超时处理肯定死机。

是的 哦,,没做超时处理,,
它就 永远 不知道 什么时候结束。

一周热门 更多>