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)
;
- 使大小足够长,例如 16 字节;
将您的 HAL_UART_RxCpltCallback
例程调用到函数 HAL_UART_Receive_IT(...)
中。我建议你像这样添加一个结束字符(\n
)检测:
if ( (*huart->pRxBuffPtr) == '\n') {
HAL_UART_RxCpltCallback(huart); //-------------------------------------------/////////
} else {
huart->pRxBuffPtr++;
}
大家好,我正在尝试使用 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)
;
- 使大小足够长,例如 16 字节;
将您的
HAL_UART_RxCpltCallback
例程调用到函数HAL_UART_Receive_IT(...)
中。我建议你像这样添加一个结束字符(\n
)检测:if ( (*huart->pRxBuffPtr) == '\n') { HAL_UART_RxCpltCallback(huart); //-------------------------------------------///////// } else { huart->pRxBuffPtr++; }