HAL_UART_Receive_IT() 当收到多余字节后, 不再收到中断

在调试串口的时候出现了一些问题, 于是写了如下测试代码。
Main循环中一个状态机, 接受数据,进Idle,  收到中断后, 等待1s, 继续接收。

使用串口助手每次按设计发送2Bytes时, 一切正常。 但是, 当发送多余2Byte时, 
只有第一次发送后能收到中断。 之后的HAL_UART_Receive_IT()不再收到中断。

代码如下, 求教可能什么问题?


void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
{
eUartState = DEVICE_STATE_RECV;
}

main()
{
....
 while (1)
  {
  switch(eUartState)
  {
  case DEVICE_STATE_RECV:
    HAL_Delay(1000);
    HAL_UART_Receive_IT(&huart2,(uint8_t *) aRxBuffer, 2);
    eUartState = DEVICE_STATE_IDLE;
    break;
  case DEVICE_STATE_IDLE:
    break;
  }
}
}


已邀请:

RSJ

赞同来自:

碰到同样的问题

接收完成后需要重新调用HAL_UART_Receive_IT函数开启下一次中断


fengxingdadi

赞同来自: yooh

发现小于等于Numbers都可以正常使用,大于就会出问题,串口直接卡死

要回复问题请先登录注册