F429串口接收中断卡死,求大神们解决

2019-07-20 10:28发布

先说说具体情况吧,工程中用到F429的串口1、2、4、7接收中断,我用接收中断的回调函数void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)来处理数据,但是有时就会卡死在while(HAL_UART_Receive_IT(&UART1_Handler, (u8 *)aRxBuffer1, RXBUFFERSIZE) != HAL_OK)出不来,这说明我huart->State!=HAL_UART_STATE_READY && huart->State!=HAL_UART_STATE_BUSY_TX;但是我串口的发送端都没发数据了,它还是出不来。很多天了,心塞
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
1547674987
1楼-- · 2019-07-20 15:28
好久没人回帖,我后面没用HAL库,问题解决了
1547674987
2楼-- · 2019-07-20 16:11
 精彩回答 2  元偷偷看……
1547674987
3楼-- · 2019-07-20 19:09
[mw_shl_code=c,true]void USART1_IRQHandler(void)                       
{
        u8 Res;
        u32 timeout=0;
#if SYSTEM_SUPPORT_OS                
        OSIntEnter();   
#endif
       
        HAL_UART_IRQHandler(&UART1_Handler);         
        timeout=0;
        while(HAL_UART_Receive_IT(&UART1_Handler, (u8 *)aRxBuffer1, RXBUFFERSIZE) != HAL_OK)
        {
        timeout++; //
        if(timeout>HAL_MAX_DELAY) break;       
        }       

#if SYSTEM_SUPPORT_OS         
        OSIntExit();                                                                                           
#endif
}[/mw_shl_code]
1547674987
4楼-- · 2019-07-20 22:43
我想不通的是如果接收端没再接收到数据的话 huart->State应该会改变为HAL_UART_STATE_READY 或则HAL_UART_STATE_BUSY_TX。那么就可以跳出该中断了。但是 没有像我想的那样, 大家有遇到类似的情况吗
正点原子
5楼-- · 2019-07-21 04:35
 精彩回答 2  元偷偷看……

一周热门 更多>