刚开始学习 STM32 的时候,不知道大家有没被外设驱动支配过的恐惧?
那么多的外设,那么多的选项,有可能一个选项没配置对,外设就工作不正常了,大大增加我们入行的难度。
针对这个问题,ST 公司很贴心地为我们推出了 STM32CubeMX ,通过这个工具,我们可以快速完成外设的配置,无需自己动手写一行代码,极大的保护了我们为数不多的头发!
但是,像这种工具,不建议大家过度使用,否则会阻碍你技术的成长。刚开始学 STM32 的时候,或者有需要快速验证 demo 的时候,可以用一下,其它时间,还是建议大家自己动手写代码,对自己的职业生涯更有好处。
0. 前置阅读
本文首发 良许嵌入式网 :https://www.lxlinux.net/e/ ,欢迎关注!
本文所涉及的源码及安装包如下(由于平台限制,请点击以下链接阅读原文下载):
https://www.lxlinux.net/e/stm32/stm32cubemx-tutorial.html
如果你是个零基础的小白,连 STM32 都没见过,我也给你准备了一个保姆级教程,手把手教你搭建好 STM32 开发环境,并教你如何下载程序,简直业界良心!
https://www.lxlinux.net/e/stm32/stm32-quick-start-for-beginner.html
如果你连代码都不知道怎么烧录到 STM32 的,可以参考下文,提供了 5 种代码烧录方式:
https://www.lxlinux.net/e/stm32/five-ways-to-flash-program-to-stm32.html
如果你不想使用 STM32CubeMX,想自己搭一个属于自己的工程模板,可以参考下面这篇文章:
https://www.lxlinux.net/e/stm32/create-stm32-hal-project-template.html
1. STM32CubeMX简介
STM32CubeMX 是 ST 公司开发的一款图形配置工具,可通过配置自动生成初始化代码(不是逻辑代码哦)。支持 Windows 和 Mac 系统。搭配不同系列的 STM32 Cube 固件包,几乎可支持 STM32 全系列芯片。
STM32CubeMX 为开发者提供了快速、方便的 STM32 微控制器配置和初始化方式。它大大简化了嵌入式开发过程,提高了开发效率,使开发者能够更专注于应用程序的开发和功能实现。
2. STM32CubeMX安装
这里一定要先搭建 Java 环境—— JRE 安装,再安装 STM32CubeMX ,因为 STM32CubeMX 是基于 Java 环境运行的。
2.1 安装包准备
JRE安装包
STM32CubeMX安装包
2.1 搭建Java环境——JRE安装
如果你电脑已经安装了 JRE,就不需要再重新安装了。但是要注意,STM32CubeMX 要求 JRE 版本在 1.7.0_45 以上,如果版本太老,需要重装一下。
可以使用我给的安装包安装,版本是1.8.0_271 ,够你用的了,无需追求最新版。
也可以去官网下载:https://www.oracle.com/java/technologies/downloads/
双击打开安装程序:
接下来基本上一路下一步了,跟着图片操作即可。
如何判断 JRE 有没安装成功?可以测试一下,在 cmd 输入java -version
,如下图,能检测到版本就是安装成功。
2.2 STM32CubeMX安装
STM32CubeMX 在它的官网可以下载,网址如下:
https://www.st.com/content/st_com/zh/stm32cubemx.html
建议用我给的安装包,毕竟官网服务器在国外下载速度非常慢,而且还要填个人信息。
接下来的安装步骤,请依次看下面的图片:
安装路径不要带中文哦。
2.3 下载STM32固件包
打开 STM32CubeMX,先设置一下仓库路径。仓库路径不能带中文,否则会出现奇奇怪怪的问题,之后加载固件包也会失败。
下载 STM32 固件包:
3. STM32CubeMX界面介绍
3.1 STM32CubeMX启动界面介绍
相信初学者打开 STM32CubeMX 一定是一脸懵逼,里面都是全英文的,不知道从何入手。这里先给大家简单讲解一下。
在新建工程这一栏里,我们最常用的是第一个,「ACCESS TO MCU SELECTOR」,它会弹出一个芯片列表供你选择,然后就会创建一个项目工程,你可以基于此项目进行项目开发。
下图是菜单栏的功能介绍:
3.2 STM32CubeMX项目界面介绍
在这个界面的左侧,我们可以快速配置芯片的基本参数及外设,比如:系统内核、Timer、串口、DMA,等等。
右侧主界面有一颗大大的芯片,我们可以选择具体的引脚进行配置,而且可以修改每个引脚的标签,还是比较灵活。
全部配置完成之后,就可以生成一个对应的工程文件,我们就无需自己动手编写外设的驱动文件了,十分方便。
具体如何操作,请看下面的示例。
4. STM32CubeMX使用示例
在本节里,我将用 STM32CubeMX 做一个宇宙级跑马灯小项目,带大家入门 STM32CubeMX。
使用的是正点原子战舰 STM32 开发板,芯片型号是 STM32F103ZET6,72M 主频,512K 片上 flash ,64K SRAM,十分强大。
4.1 新建工程
4.2 时钟模块配置
4.3 时钟系统配置
STM32 的时钟树其实不难,只是看起来比较吓人。大家按照下图,从 1~5 一个个配置,就可以完成时钟系统配置。
F1 系列芯片的主频是 72Mhz,可以手动在图中的 HCLK 改为 72 ,就可以将主频设置为最大。
顺带一提,STM32F4 系列芯片的主频是 180Mhz;STM32F7 系列芯片的主频是 216Mhz;STM32H7 系列芯片的主频是 400Mhz,大家使用不同的芯片,记得要将 HCLK 设置为对应的主频。
4.4 GPIO引脚配置
根据原理图,LED0 对应 PB5,LED1 对应 PE5,所以我们的跑马灯项目需要将 PB5、PE5 设置为 GPIO 输出模式。
GPIO 模式设置完后,配置 GPIO 详细内容:
PE5 也需要配置:
4.5 Cortex内核配置
SYS 配置,Debug 仿真器配置:
NVIC(优先级分组)配置:
4.6 生成工程源码
保存路径记得也不要有中文哦。
配置了这么多步,终于可以生成代码啦,激动的心,颤抖的手。
生成完毕,弹窗:
4.7 编写用户程序
4.8 硬件连接+烧录
硬件连接如图:
硬件连接完成后再上电,图qa。
4.9 烧录效果
绿灯和红灯交替闪烁,间隔500ms。
5. 总结
STM32CubeMX 能帮助开发者通过直观的图形界面快速完成 STM32 微控制器的硬件配置,外设初始化以及中间件设置等工作。通过 STM32CubeMX,开发者可以大幅提高开发效率,降低开发难度,尤其是对于刚接触 STM32 的新手。
STM32CubeMX 虽然方便,但不建议大家过度依赖它,否则会影响你的个人能力发展。只有你在刚入门 STM32,或者需要快速验证一些代码,才建议大家使用这个软件。