gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 01:54:00 27 4
gpt4 key购买 nike

大家好,我正在尝试使用 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);

如果你有任何想法,请评论:)

最佳答案

检查函数: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++;
    }

关于c - STM32 HAL rx中断无法正确获取字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37829430/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com