这一章在干嘛? 全面学习 STM32CubeMX:从安装、新建工程、配置时钟/GPIO/USART/SPI/TIM,到生成 MDK 工程和使用技巧。掌握后能 5 分钟搭起一个完整外设工程。
10.1 STM32CubeMX 的作用
CubeMX 是一个图形化配置工具,帮你:
- 选择芯片 → 引脚分配可视化;
- 配置外设参数 → 时钟树自动计算;
- 生成初始化 C 代码 → MDK / IAR / GCC / Makefile 多平台。
原书图 10.1.1:CubeMX 主界面
10.2 安装 STM32CubeMX
- 到 st.com 下载最新版 CubeMX 安装包;
- 安装前需 Java 8+(Win10+ 自带);
- 一路默认安装;
- 首次启动会下载 F1/F4/F7/H7 等芯片包(可离线包导入)。
10.3 使用 STM32CubeMX 新建工程
10.3.1 新建工程
File → New Project → 搜 STM32F407IG → 选 LQFP176 封装 → Start Project。
10.3.2 引脚分配
- 搜「PA0」在 Pinout 视图里点选 → GPIO_Output / GPIO_EXTI0;
- 双击 USART1 → Mode = Asynchronous → 引脚自动分配到 PA9/PA10。
10.3.3 时钟配置
Clock Configuration 标签页:
- Input frequency = 8 MHz(HSE)
- PLL Source Mux = HSE
- M = 4,N = 168,/2 = 168 MHz
- SYSCLK = 168 MHz,AHB = 168,APB1 = 84 MHz(最高 84),APB2 = 84 MHz(最高 84)
- 注意 CubeMX 会用蓝色字标出超出范围。
原书图 10.3.3.1:168 MHz 时钟树配置
10.3.4 外设参数
USART1 Configuration → Baud Rate 115200 → Word Length 8 → Parity None → Stop Bits 1 → Data Direction Receive and Transmit。
10.3.5 生成代码
Project Manager →
- Project Name:
MyProject - Project Location:英文路径
- Toolchain / IDE:MDK-ARM V5
Code Generator → 勾选
- Generate peripheral initialization as a pair of .c/.h files per peripheral
- Keep User Code when re-generating
- Delete previously generated files when not re-generated
GENERATE CODE → 提示「Open Folder」打开工程。
10.4 STM32CubeMX 新建工程使用建议
用户代码写在 USER CODE BEGIN / END 之间,再次生成 CubeMX 代码不会被覆盖。
CubeMX 不能写业务逻辑,它只生成初始化代码。中断回调、while 循环里的应用层代码还得手写。
原书图 10.4.1:CUBE MX 用户代码块示意
🧠 小测验CubeMX 的时钟树作用?
可视化配置 PLL/分频系数,并自动校验是否超出外设最高频率。
168 MHz 时钟的 APB1 最高频率是?
84 MHz。
CubeMX 重新生成时代码会覆盖吗?
只覆盖非用户代码区域;用户写在 BEGIN/END 块里的代码会保留。