while(1)
{
UartState = HAL_UART_Receive(&huart1,(uint8_t*)&RxData,1,1);
if(UartState == HAL_
tiMEOUT)
{
break;
}
push_char(ldc_parser,RxData);
}
长时间向串口发送数据后,进不了push_char函数了,就是一直接收超时,但是串口确实一直在发送数据;波特率为115200
debug看,是一直在这个循环里面,timeout了
while(__HAL_UART_GET_FLAG(huart, Flag) == RESET)
{
/* Check for the Timeout */
if(Timeout != HAL_MAX_DELAY)
{
if((Timeout == 0)||((HAL_GetTick() - tickstart ) > Timeout))
{
}
}
}
请问各位有遇到过这种情况的吗?还请多多指教
串口有一个overrun的中断,USART_IT_ORE: OverRun Error interrupt
注册一下这个中断处理函数,看看能不能进入这个中断。
如果确实是这个问题,提供两个解决方案:
1.降低数据发送频率
2.开启硬件流控制,参考串口的RTS针脚
一周热门 更多>