使用STM32CubeMX生成代码点亮流水灯——基于HAL库

一、搭建环境

SMT32CubeMX是ST公司推出的图形化工具,用于生成的工程的初始化代码。节约了搭建工程和配置芯片初始化的时间。我们只需要在生成的程序当中添加适当代码就可以实现一定功能,非常方便。
在使用SMT32CubeMX时要先安装jdk,因为SMT32CubeMX是通过Java实现的。
jdk官网下载链接:
https://www.oracle.com/java/technologies/javase-downloads.html
按照步骤安装好就可以了,然后下载SMT32CubeMX
下载地址:
https://www.st.com/en/development-tools/stm32cubemx.html
安装如图步骤安装好即可。
在这里插入图片描述
在这里插入图片描述
安装好后还需要安装一个固件库,因为我使用的芯片是STM32F103系列的,所以选择STM32F1版本进行安装。安装完后环境就搭建好了。
在这里插入图片描述

二、创建工程

配置好环境后,打开软件,点击New Project创建工程,选择第一个选项。
在这里插入图片描述
然后选择芯片型号,直接点击start project。
在这里插入图片描述
然后在上图的界面对芯片的管脚进行配置来实现流水灯

1.配置时钟

首先在system core中选择RCC,然后把HSE(外部高速时钟)设置为Crystal/Ceramic Resonator(晶振/陶瓷谐振器)
在这里插入图片描述
接着,点击Clock Configuration,进入系统时钟树的设置,由于STM32的最高时钟为72MHz,所以按照图示设置即可。
在这里插入图片描述

2. GPIO配置

首先在system core中选择GPIO,然后选择引脚,我选择的GPIO Output引脚为A1,B1,C15,输出模式默认的是推挽输出,因此不需要做改动。
在这里插入图片描述

3. 配置调试接口

在System Core中选择SYS,Debug根据需求选择,选择Serial Wire完成配置。

4. 生成工程

最后完成后选择文件夹和工程名称,点击GENERATE CODE生成工程,生成的程序就在工程里面
在这里插入图片描述

三、添加代码

打开生成的工程,然后在mian函数里面找到while循环,将下列代码复制到里面。

HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_SET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,GPIO_PIN_RESET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,GPIO_PIN_SET);
HAL_Delay(500);

然后编译一下,没有错误即可。

四、电路连接

将电路接线,接法可以参考我的以前的博客 STM32F103最小系统板点亮流水灯

五、实验效果

在这里插入图片描述

六、逻辑分析仪观察波形

我们可以通过Keil软件进行仿真逻辑分析仪观察产生的波形,即使在不接入硬件的情况下也可以判断实际的效果,非常方便。

  1. 首先设置一下:点击魔法棒,然后选择Target,将晶振设置以下,由于在STM32CubeMX当中我设置的是72MHz,所以在这里也设置为72MHz,根据你的情况来定,晶振的设置对波形的影响很大,所以一定要设置正确。
    在这里插入图片描述
    然后再点击Debug设置
    在这里插入图片描述
    按照图中的进行设置,在Parameter这个选项这里根据你选择的芯片型号进行设置。
  2. 然后点击运行程序,再点击逻辑分析仪logic Analyzer Window,打开后点击Setup Logic Analyzer选择天骄引脚,可以手动输入引脚,也可以选择Symbol window然后在Special Funtion Register里面选择,找到需要观测的寄存器,然后直接拖到逻辑分析仪窗口。
  3. 添加完寄存器引脚后我们需要设置一下。如图将Type设置为Bit,颜色设置为不同的方便区分。
    在这里插入图片描述
  4. 最后的结果如图所示,可以用鼠标滚轮拖动调节大小。
    在这里插入图片描述
  5. 周期分析
    因为我设置的时延为500MHz,一个周期3个LED灯,要执行6次,就是3s,所以一个周期内每个灯都会经历一次高低电平,所以一个周期的波形如图所示,大约为0.276s,又因为每一格代表0.1s,所以实际周期为2.76s。可以看到用逻辑分析仪观察出的实际运行的波形周期和设置的是有一定误差的。

在这里插入图片描述

七、总结

通过此次实验后,学习使用了STM32CubeMX这种方便的软件,大大节省了我们设计的时间,它会自动生成程序,只需要添加循环里面的代码就可以运行了。方便又快捷,只要熟练使用之后就能大大提高生产力,而且也了解到了如何使用Keil5软件的仿真进行波形的观测,在不接入问题的情况下也能观察输出运行的结果,而且根据实际的波形能迅速找到问题的所在,不会让你感到非常茫然。只能说虽然一开始困难重重,但是只要找到问题所在一一解决后就会发现其实没有什么难度。
参考链接: 使用STM32CubeMX之入门流水灯.

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值