单片机学习小组
直播中

李中宏

7年用户 1202经验值
私信 关注

如何利用STMCubeMX去制作一个LED流水灯呢

如何利用STMCubeMX去制作一个LED流水灯呢?有哪些基本步骤?

回帖(1)

李响

2022-2-11 09:20:22
一、主要内容提示


  用hal库,重做上一个LED流水灯作业,即用GPIO端口完成3只LED红绿灯的周期闪烁。
  实验所需:
STMCubeMX:用来生成代码
keil5:编译代码生成hex文件
flymcu:将代码烧录到板子里
板子: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才能正常运行。

小小的总结

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

更多回帖

发帖
×
20
完善资料,
赚取积分