STMCubeMX生成代码(hal库)实现流水灯

一、主要内容提示

用hal库,重做上一个LED流水灯作业,即用GPIO端口完成3只LED红绿灯的周期闪烁。
上次流水灯:STM32F103寄存器方式点亮LED流水灯

实验所需:
STMCubeMX:用来生成代码
keil5:编译代码生成hex文件
flymcu:将代码烧录到板子里,不知如何操作请参考上次博客STM32F103寄存器方式点亮LED流水灯
板子:STM32F103C8T6单片机
实验所需应用程序可自行百度寻找资源,安装下载都比较简单。

二、STMCubeMX的使用

1. 下载依赖包

安装好STMCubeMX后,在首页点击help,下载我们需要的依赖包。

在这里插入图片描述
请添加图片描述

这里绿色是表示已经下载好了(因为笔主之前下载过了)。

2. 创建新项目

回到主界面,创建新项目

请添加图片描述请添加图片描述
点击System Core,进入SYS,在debug那里选择Serial Wire。

请添加图片描述
接下来就是配置时钟,进入上面的rcc,有两个时钟,一个是hse和lse,我们要用是GPIO接口,而这些接口都在APB2里;
我们将hse那里设为Crystal/Ceramic Resonator。

请添加图片描述
接下来观察时钟架构,APB2总线的时钟由hse控制,同时在这个界面得把PLLCLK右边选上:

请添加图片描述
接下来就是点击相应的引脚设置输出寄存器了,就是output那一项,一共选了三个,是PA7,PB9,PC15;
下图右边的板子上将PA7,PB9,PC15都设置成output(将你的鼠标放上去就会出现下拉选项,选择output就行),设置好后就是下图的样子;
设置还没完,点击System core里的GPIO,把点击引脚名,把输出等级改为high(其实这里不改也没什么,只是程序运行开始时初始状态不一样),mode不用改。

请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述

直接open,就会在Keil里打开。
STMCubeMX的部分就完成了。

三、 代码

请添加图片描述

在上图main里面写入代码,替换原有的:

SystemClock_Config();//系统时钟初始化
  MX_GPIO_Init();//gpio初始化
  while (1)
  {
    
    		
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_RESET);//PA7亮灯
		HAL_Delay(500);//延时0.5s
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_SET);//PA7熄灯
		HAL_Delay(500);//延时0.5s		
		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_RESET);//PB9亮灯
		HAL_Delay(500);//延时0.5s
		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_SET);//PB9熄灯
		HAL_Delay(500);//延时0.5s
		
		HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,GPIO_PIN_RESET);//PC15亮灯
		HAL_Delay(500);//延时0.5s
		
		HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,GPIO_PIN_SET);//PC15熄灯
		HAL_Delay(500);//延时0.5s
  }

配置生成.hex文件:

在这里插入图片描述

然后运行生成.hex文件:
在这里插入图片描述

四、 烧录

五、运行结果

运行:串口烧录要断电之后把boot0置0才能正常运行。

如不清晰请跳转:流水灯视频链接——B站

请添加图片描述

小小的总结

使用STMCubeMX生成代码相对于Keil来说更为简单,也不用去找串口对应接口的脚本,很是便利,使用步骤也不复杂,但其中的一些操作还不熟练,应当多加操练。
在烧录或者运行时可能会出现一些小问题,烧录不成功多看看板子的连接是否正确,连接是否有接触不良的情况,有问题及时百度,或者寻求朋友帮助,总能解决的。

参考文献

  1. 使用STMCubeMX生成代码(使用hal库)实现流水灯
  2. STM32F103寄存器方式点亮LED流水灯

猜你喜欢

转载自blog.csdn.net/YouthBlood9/article/details/121050297
今日推荐