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

STM32 HAL rx interrupt can't get bytes correctly

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

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

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

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

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

有什么想法欢迎评论:)

检查函数:HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);

  1. 使大小足够长,例如 16 字节;
  2. 将您的 HAL_UART_RxCpltCallback 例程调用到函数 HAL_UART_Receive_IT(...) 中。我建议你像这样添加一个结束字符(\n)检测:

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