stm32cubemx 串口接收不定长数据
2021.3.9 stm32cubemx 串口接收不定长数据 配置 :usart1 勾选中断。
代码如下 全局变量
#include <string.h> uint8_t date[255]; uint8_t temp; uint8_t i=0;
主循环
while (1)
{
HAL_UART_Receive_IT(&huart1,&temp,1);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
串口中断函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if (huart->Instance==USART1)
{
date[i++]=temp;
if(date[i-1]==0x0A&&date[i-2]==0x0D)
{
HAL_UART_Transmit(&huart1,date,i,1000);
i=0;
memset(date,0,14);
}
HAL_UART_Receive_IT(&huart1,&temp,1);
}
}
因为用串口助手 发送字符给单片机的时候会在 后面加上换行符和 归位符 即 0x0a 和 0x0d (10和13) ,所以以此为判断标志。
可以通过重定向,然后用%d 打印最后2位数的值发现。
