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

猜你喜欢

转载自blog.csdn.net/m0_52521883/article/details/114559071