CUBEMX+HAL库实现STM32串口接收(不定长度)并发送

首先新建一个CUBEMX工程

在这里插入图片描述

选择你自己开发板的芯片型号

在这里插入图片描述

设置时钟和串口

在这里插入图片描述

设置时钟为72MHZ

在这里插入图片描述

设置串口中断

在这里插入图片描述
在这里插入图片描述

点击小齿轮生成KEIL5的工程

在这里插入图片描述

设置工程名称及存放位置

在这里插入图片描述
在这里插入图片描述

点击Open Project直接打开生成的32工程

在这里插入图片描述

在main.c下添加以下变量

在这里插入图片描述

uint8_t RxByte;
uint8_t RxBuff[256];
uint16_t Rx_Count;

添加以下函数打开串口一接收中断

在这里插入图片描述

HAL_UART_Receive_IT(&huart1,&RxByte,1);

添加以下串口接收中断回调函数

在这里插入图片描述

/* USER CODE BEGIN 4 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
  /* Prevent unused argument(s) compilation warning */
  UNUSED(huart);
  
  /* NOTE : This function should not be modified, when the callback is needed,
            the HAL_UART_RxCpltCallback can be implemented in the user file
   */

	RxBuff[Rx_Count++]=RxByte;
	
	if(RxByte==0x0A)
	{
		while(HAL_UART_Transmit_IT(&huart1,RxBuff,Rx_Count)==HAL_OK);
		Rx_Count=0;
	}
	if(Rx_Count>=254)
	{
		Rx_Count=0;
	}
	while(HAL_UART_Receive_IT(&huart1,&RxByte,1)==HAL_OK);
}
/* USER CODE END 4 */

整个工程开发完毕,直接编译并烧录到单片机

打开串口助手给单片机发送数据,可以看到单片机返回来的数据

在这里插入图片描述

这是我自己建立的工程

这是我自己建立的工程

展开阅读全文

没有更多推荐了,返回首页