其他分享
首页 > 其他分享> > STM32CubeMX使用串口中断方式实现串口通信

STM32CubeMX使用串口中断方式实现串口通信

作者:互联网

文章目录

一、内容介绍

完成一个STM32的USART串口通讯程序(采用中断方式),要求:

1)设置波特率为115200,1位停止位,无校验位;

2)STM32系统给上位机(win10)连续发送“hello windows!”。win10采用“串口助手”工具接收

二、CubeMX生成工程

1)创建工程

首先,打开stm32CubeMX,创建一个新的工程,选择所需芯片;
接下来需要对该工程进行一些设置:
①时钟配置
点击左侧System Core,点击“RCC”,将HSE设置为外部晶振;
在这里插入图片描述
②设置串口
点击 Connectivity选择USART1串口,将Mode设置为异步通信,可见波特率为115200Bit/s,数据长度为8Bits等参数,以及芯片上的GPIO端口也设置成了对应的形式;
在这里插入图片描述
在这里插入图片描述
由于采用的是串口中断方式,所以需要勾选NVIC中的USART1 global interrupt(串口中断方式);
在这里插入图片描述
③时钟树设置
点击Clock Configuration,将HCLK设置为72MHZ ,回车;
在这里插入图片描述

将以上配置完毕后就可以对工程文件进行设置了;

2)导出工程

点击“Project Manager”,设置工程名和路径,以及工程打开的方式:
在这里插入图片描述
然后点击“Code Generator”设置生成代码形式,具体如下;
在这里插入图片描述
以上设置完成后就可以导出工程了,点击右上角“GENERATE CODE”即可,然后选择Open Project就能在keil中打开该工程。
在这里插入图片描述

三、功能实现

1)代码完善

工程打开后如下图所示:
在这里插入图片描述
首先,在main.c文件中的main函数之前添加代码:

#define LENGTH 4     //接受缓冲区大小
uint8_t	RxBuffer[LENGTH];   //接受缓冲区 
uint8_t RxFlag = 0;       //接收完成标志;0表示接受未完成,1表示接收完成

在这里插入图片描述

然后在main函数内while循环外添加代码表示串口中断模式接收;

HAL_UART_Receive_IT(&huart1, (uint8_t *)RxBuffer,LENGTH); 

在这里插入图片描述
接下来,就需要在While循环内添加代码了;

HAL_UART_Transmit(&huart1, (uint8_t *)"hello windows!!!\r\n", 16 , HAL_MAX_DELAY);
	  HAL_Delay(1000);  
	  if(RxFlag == 1)  
	  {
		   HAL_UART_Transmit(&huart1,(uint8_t *)"Recevie Success!\n",17,HAL_MAX_DELAY);  
		   break; 
	  }
  }

在这里插入图片描述
最后,在main函数后面添加中断回调函数:

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)  //串口接收中断回调函数
{
	if(huart->Instance == USART1)   //判断发生接收中断的串口
	{
		RxFlag=1;   //置为接收完成标志
	}
}

以上添加完成之后编译没有错误就可以了;

2)代码烧录

①电路连接
电路连接参考之前的博客,这里就不作详细说明了;
②代码烧录
首先,打开烧录软件mcuisp,将USB-TTL串口接入电脑,点击搜索串口即可看到接入的USB串口,然后将传输速率设置115200bit/s;
接下来,找到刚刚在keil中生成的HEX文件,点击“读器件信息”,右侧状态栏里显示一切正常后,就可以点击“开始编程”进行烧录了;
在这里插入图片描述

3)结果展示

烧录完成后打开串口调试助手,同样搜索我们的串口,然后把HEX文件添加进去如下图所示:
在这里插入图片描述
发送完内容后即可停止接受数据;
在这里插入图片描述

四、总结

此次实验不同于之前的用查询方式实现串口通信,串口中断方式可以在发送数据后立马终止接受数据。

五、内容参考

https://blog.csdn.net/ssj925319/article/details/111984002

标签:烧录,HAL,工程,中断,STM32CubeMX,点击,设置,串口
来源: https://blog.csdn.net/boomboomy/article/details/121170004