STM32CubeMX的搭建及使用HAL库实现LED闪烁

一、STM32的开发环境的搭建

1.安装jdk环境

a) 安装

由于STM32CubeMX是Java实现的,需要安装jdk环境;

下载链接:Java Downloads

打开exe,进入安装:
在这里插入图片描述
选择安装位置,点击下一步继续;
请添加图片描述
点击关闭,完成安装。
请添加图片描述

b) 配置

  1. 首先通过以下路径进入环境变量:
    计算机→属性→高级系统设置→环境变量
    请添加图片描述
    在这里插入图片描述
  2. 新建系统变量:
    请添加图片描述
    第一个变量名为JAVA_HOME
    变量值为安装jkd的目录,我的是C:\Program Files\Java\jdk-17.0.1
    请添加图片描述
    请添加图片描述
    第二个变量名为:CLASSPATH
    变量值: .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
    注意最前面的点不可省略
    请添加图片描述
    第三个变量是修改Path变量:
    变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
    请添加图片描述
    请添加图片描述
    再点击确定,关闭窗口。
  3. 验证java是否配置成功:
    使用键盘上的win+R, 输入cmd
    请添加图片描述
    输入java -version注意中间有空格
    显示版本信息即为安装成功。
    请添加图片描述

2.安装STM32CubeMX

a) 软件下载

请添加图片描述
这里会跳出一个窗口,要求注册账号,填写有效的邮箱地址

进入邮箱,打开邮件中的下载链接即可下载软件。
请添加图片描述

b) 安装

以管理员身份运行安装下载的exe应用程序;
请添加图片描述
点击Next继续;
请添加图片描述
勾选"I accept …",点击Next继续;请添加图片描述
再勾选下面两个权限,点击Next继续;
请添加图片描述
选择安装位置,注意路径中不要出现中文,默认地址在C盘,点击确定继续;
请添加图片描述
直接点击Next继续;
请添加图片描述
进入安装;
请添加图片描述
安装进程Finished;
请添加图片描述
点击Done,完成安装。
请添加图片描述

3.安装固件库

运行STM32CubeMX程序,在窗口Help中选择Manage embedded software packages安装固件库;
请添加图片描述
根据自己的芯片类型,选择一个固件库,点击下方的Install Now直接下载安装,也可以使用From Local…进行下载,表示从本地安装,前提是已经在本地下载了对应的固件库;
请添加图片描述
进入下载页面;
请添加图片描述
下载完成后,前面的框显示为绿色
请添加图片描述
固件库便安装完成。

4.安装MDK5软件

我的设备已安装过Keil,如有需要可参考链接:
如何开始一个stm32的简单程序的编译

注意:安装过程结束后,要安装对应的固件库才能够做对应STM32的开发。

二、利用工具生成点亮LED灯的代码

1、打开STMCubeMX,点击ACCESS TO MCU SELECTOR创建新项目;
在这里插入图片描述
下载必要的文件;
在这里插入图片描述
2、进入主页面,在Part Number处选择芯片,这里以STMC8T6为例,然后点击下方一栏,会出现的一列芯片的信息,再点击Start Project;
在这里插入图片描述
3、点击System Core,选择SYS,在Debug处选择Serial Wire
在这里插入图片描述
4、再选择RCC配置时钟,可以看到有两个时钟,分别是HES和LSE。
在这里插入图片描述
我们采用是GPIO接口,而这些接口都在APB2里;
点击Clock Configuration观察时钟架构,可以看见APB2总线的时钟由HES控制,同时把中间的PLLCLK选上;
在这里插入图片描述
所以回到第一个页面,将HSE设为Crystal/Ceramic Resonator,勾选后RCC前面也会自动勾选上;在这里插入图片描述
5、接下来设置输出寄存器,选择进入GPIO界面,点击相应的引脚,选择GPIO_Output
在这里插入图片描述
这里选了三个,分别是PA4PB10PC14
请添加图片描述
在左边可以看到添加的三个引脚,并修改参数Maximun output speedMedium,然后在User Label添加引脚标签
请添加图片描述
6、点击上方的Project Manager,在Project页面,配置好项目名称路径,然后修改Toolchain/IDEMDK-ARM,版本根据自己的设备选择;

注意路径中不能含有中文,否则后面生成的文件不全。

请添加图片描述
7、再点击进入Code Generate界面,在Generated files勾选Generate peripheral initialization as a pair of '.c/.h' files per peripheral生成初始化.c/.h文件;
请添加图片描述
8、最后点击右上方的GENERATE CODE,即可生成代码;
请添加图片描述
点击Open Project便可直接进入工程。
请添加图片描述

三、MDK5生成.hex文件

3.1 在main函数中插入代码

继续上面的操作,进入工程后,通过目录找到并打开main.c文件,找到主函数int main(void)的部分;
请添加图片描述

/* USER CODE BEGIN /
用户代码
/ USER CODE END*/

如果要在STM32CubeMX生成的工程中添加代码,要在提示 /* USER CODE BEGIN* /和/* USER CODE END*/之间添加代码,这样STM32CubeMX重新生成代码时才不会将自己添加的代码删除掉。
此外,注意使用CubeMX配置生成的工程中的注释最好不要随便删除掉。

while循环的 /* USER CODE BEGIN 3 / 下面插入以下代码:

	HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_RESET);//PA4亮灯
	HAL_Delay(500);//延时0.5s
	HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_SET);//PA4熄灯
	HAL_Delay(500);//延时0.5s		
	  
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_10,GPIO_PIN_RESET);//PB10亮灯
	HAL_Delay(500);//延时0.5s
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_10,GPIO_PIN_SET);//PB10熄灯
	HAL_Delay(500);//延时0.5s
		
	HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14,GPIO_PIN_RESET);//PC14亮灯
	HAL_Delay(500);//延时0.5s
	HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14,GPIO_PIN_SET);//PC14熄灯
	HAL_Delay(500);//延时0.5s

如下图所示,注意要插入到while函数的括号范围内;
请添加图片描述

3.2 调试编译

编译程序,无报错且生成相应的.axf文件;
请添加图片描述
在文件夹LED_test中,可找到生成的.hex文件;
请添加图片描述

四、程序烧录

烧录过程的操作和软件下载可参考我的上一篇博文:
使用STM32寄存器点亮LED流水灯

在这里插入图片描述

五、运行结果

面包板工作如下,LED三色灯正常亮灯,间隔闪烁。
请添加图片描述

六、MDK5模拟示波器

在没有示波器条件下,可以使用MDK5的软件仿真逻辑分析仪功能观察管脚的时序波形,更方便动态跟踪调试和定位代码故障点,因此可以用MDK5的软件仿真观察3个GPIO端口的输出波形。

6.1 配置工程

点击魔术棒进入工程配置,首先在Target窗口,设置晶振为8MHz;
请添加图片描述
配置Debug
1、勾选Use Simulator
2、勾选Run to main
3、修改左边的Dialog.DLL为DARMSTM.DLL
4、修改右边的Dialog.DLL为TARMSTM.DLL
5、修改两边的Parameter为-pSTM32F103C8

DARMSTM.DLL和TARMSTM.DLL在STM32的单片机中应该都是固定的;
Paramter是根据采用的具体芯片,应与Target中STMicroelectronics 保持一致。

在这里插入图片描述

6.2 调试观察

1、点击窗口右上角的Start Debug Session进行仿真调试;
在这里插入图片描述
2、调试后,选择逻辑分析仪Logic Analyer
请添加图片描述
3、选择要观察的引脚:
点击Setup Logic Analyzer
请添加图片描述
添加要观察的引脚;

如PA4可直接输入PORTA.4;
图中选择的三个引脚分别是PA4、PB10和PC14,GPIOA对应的为PORTA,那么GPIOB对应的也应该写成PORTB,以此类推。其中PORTA & 0x00001000后再右移4位也就把PA4的状态获取出来,1是高电平,0是低电平。PB10和PC14同理。

选择Bit,便于观察波形;
颜色是为了区分不同的引脚,根据需要配置即可。

注意:如果上述步骤中Debug没有正确修改正配置,那么在添加引脚的时候就会出现Unknown Signal 的报错

请添加图片描述
4、运行程序;
在这里插入图片描述
5、观察波形,把光标移动到逻辑分析仪显示波形的区域,上下滚动滑轮,就可以放大和缩小波形,即可观察各个引脚的波形图;
请添加图片描述

七、总结

本次实验安装了两个软件jkd和Cube,配置后使用Cube自动生成代码,再烧录到硬件上,体会到了使用工具的便捷性,且大大提高了工作效率,若是熟悉操作更能在高效下保证代码的准确性。通过逻辑分析仪代替示波器,更能在仿真出现问题时,定位到问题所在,再逐步解决!

八、参考文献

1 .搭建STM32开发环境——STM32CubeMX,Keil5

2.STM32实现LED闪烁——基于HAL库

3.基于 MDK 创建 STM32 汇编程序:串口输出 Hello world

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32CubeMX是由STMicroelectronics开发的一款集成开发环境(IDE),用于快速生成STM32微控制器相关的初始化代码。它提供了用户友好的图形界面,支持中文语言,使得开发人员可以轻松地配置和初始化STM32微控制器的各种外设,例如GPIO、USART、I2C等。STM32CubeMX还能够生成初始化代码模板,并支持导出至主流的IDE平台,如Keil、IAR等。 相对于STM32CubeMXSTM32F1的HAL(Hardware Abstraction Layer)库是一种更底层的API层,用于抽象硬件细节,为开发人员提供更直接、更灵活的访问STM32F1系列微控制器的各种外设。HAL库提供了一系列函数接口,方便用户进行底层硬件编程,例如GPIO的读写操作、USART的发送接收等。 STM32CubeMXSTM32F1的HAL库在开发过程中都有各自的优点。STM32CubeMX提供了一个易于使用的图形化界面,使得微控制器初学者能够更加快速地进行外设配置,生成初始化代码,并支持中文,方便使用中国开发者。而HAL库提供了更灵活、更底层的硬件接口,允许开发者直接调用底层寄存器操作,满足对微控制器性能和资源要求更高的应用场景。 总之,STM32CubeMXSTM32F1的HAL库STM32微控制器开发的两个重要工具。对于初学者来说,可以先通过STM32CubeMX进行外设配置和生成初始化代码,然后使用HAL库进行更高级的编程。而对于有一定经验的开发者来说,可以直接使用HAL库进行底层硬件操作。无论是哪种方式,都能够帮助开发者更加快速、高效地进行STM32F1系列微控制器的开发工作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值