STM32 HAL rx中断无法正确获取字节

时间:2016-06-15 07:59:55

标签: c avr stm32 nodemcu

大家好我正在尝试使用stm32 HAL库进行串行rx中断,我得到了我不知道的错误。

这是一个非常简单的程序。 PC为stm32板提供字节,stm32将使用rx中断例程获取这些字节。

问题是当我发送超过4个字节时,例如" 12345",stm32板只有4个字节,最后一个字节(5)消失了。这是为了更好地理解的图片。

enter image description here

这是我在HAL_UART_RxCpltCallback例程中的代码:

HAL_UART_Transmit(&huart4, &receive1, 1, 1000);
HAL_UART_Receive_IT(&huart4, &receive1, 1);

如果您有任何想法,请发表评论:)

1 个答案:

答案 0 :(得分:3)

检查功能:HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);

  1. 制作一个足够长的大小,例如16bytes;
  2. 将您的HAL_UART_RxCpltCallback例程调用到函数HAL_UART_Receive_IT(...)中。我建议您添加一个结束字符(\n)检测,如下所示:

    if ( (*huart->pRxBuffPtr) == '\n') {
        HAL_UART_RxCpltCallback(huart);  //-------------------------------------------/////////
    } else {
        huart->pRxBuffPtr++;
    }