大家好我正在尝试使用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);
如果您有任何想法,请发表评论:)
答案 0 :(得分:3)
检查功能:HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
;
将您的HAL_UART_RxCpltCallback
例程调用到函数HAL_UART_Receive_IT(...)
中。我建议您添加一个结束字符(\n
)检测,如下所示:
if ( (*huart->pRxBuffPtr) == '\n') {
HAL_UART_RxCpltCallback(huart); //-------------------------------------------/////////
} else {
huart->pRxBuffPtr++;
}