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位数的值发现。