2021年8月 UM1718 Rev 1 [English Rev 31] 1/363
1
UM1718
用户手册
STM32CubeMX用于STM32配置和初始化C代码生成
引言
STM32CubeMX是用于STM32微控制器的图形工具。它属于STM32Cube计划(参见
第
1
节
),
既可作为独立应用,也可在STM32CubeIDE工具链中使用。
STM32CubeMX有以下主要特性:
• 微控制器选择方便,覆盖整个STM32产品
• 可从一系列意法半导体的开发板中选择板子
• 微控制器配置简单(引脚、时钟树、外设、中间件)以及生成对应的初始化C代码
• 将以前保存的配置导入新的MCU项目即可轻松地转换到其他微控制器
• 将当前配置轻松地导出到兼容的MCU
• 生成配置报告
• 为一系列集成开发环境工具链生成嵌入C项目 STM32CubeMX项目包括生成的初始化C代码、
兼容MISRA 2004的HAL驱动程序、用户配置所需的中间件协议栈,以及在选择的IDE中
打开和建立项目的所有相关文件。
• 用户定义应用序列的功耗计算
• 自动更新功能确保用户随时更新STM32CubeMX
• 下载和更新用户应用开发所需的STM32Cube嵌入式软件(关于STM32Cube嵌入式软件产品
的详情,参见
附录
E)
虽然STM32CubeMX提供了一个用户界面并且生成的C代码兼容STM32 MCU设计和固件解
决方案,但用户仍需要参考产品技术文档,以了解关于微控制器外设和固件实际实现的详
情。
以下文档可从www.st.com获得:
• STM32微控制器参考手册和数据手册
• STM32F0(UM1785)、STM32F1(UM1850)、STM32F2(UM1940)、
STM32F3(UM1786)、STM32F4(UM1725)、STM32F7(UM1905)、
STM32G0(UM2303)、STM32G4(UM2570)、STM32H7(UM2217)、
STM32L0(UM1749)、STM32L1(UM1816)、STM32L4/L4+(UM1884)、
STM32L5(UM2659)、STM32MP1(https://wiki.st.com/stm32mpu)和STM32WB
(UM2442)的STM32Cube HAL/LL驱动程序用户手册。
www.st.com
目录 UM1718
2/361 UM1718 Rev 1 [English Rev 31]
目录
1 STM32Cube 概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2 STM32CubeMX入门 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.1 原理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2 主要特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.3 规则和限制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3 安装和运行 STM32CubeMX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.1 系统要求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.1.1 支持的操作系统和架构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.1.2 存储器必要条件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.1.3 软件要求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2 安装/卸载 STM32CubeMX 独立版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2.1 安装STM32CubeMX 独立版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2.2 从命令行安装STM32CubeMX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2.3 卸载STM32CubeMX独立版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.3 启动STM32CubeMX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.3.1 作为独立应用程序运行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.3.2 在命令行模式下运行STM32CubeMX . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.4 使用STM32CubeMX进行更新 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.4.1 更新程序配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.4.2 安装STM32 MCU软件包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.4.3 安装STM32 MCU软件包补丁 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.4.4 安装嵌入式软件包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.4.5 删除已安装的嵌入式软件包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.4.6 检查更新 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4 STM32CubeMX用户界面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.1 主页 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.1.1 文件菜单 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.1.2 “窗口”菜单和“输出”选项卡 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.1.3 Help菜单 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.1.4 社交链接 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.2 新项目窗口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
UM1718 Rev 1 [English Rev 31] 3/361
UM1718 目录
8
4.2.1 MCU选择器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.2.2 板选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.2.3 交叉选择器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.3 项目页面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.4 “引脚布局和配置”视图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.4.1 元件清单 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.4.2 “组件模式”面板 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
4.4.3 “引脚排列”视图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.4.4 “引脚布局”菜单和快捷键 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.4.5 “引脚布局”视图高级操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.4.6 保持当前信号位置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.4.7 在引脚上锁定和标记信号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.4.8 多重键合封装的引脚布局 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.4.9 系统视图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
4.4.10 组件配置面板 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
4.4.11 ”用户常量“配置窗口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
4.4.12 “GPIO配置”窗口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
4.4.13 “DMA配置”窗口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
4.4.14 “NVIC配置”窗口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
4.4.15 FreeRTOS配置面板 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
4.4.16 设置HAL时基源 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
4.5 STM32MP1系列的“引脚布局和配置”视图 . . . . . . . . . . . . . . . . . . . . . . . . 103
4.5.1 运行时配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
4.5.2 启动阶段配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
4.6 STM32H7双核产品系列的“引脚布局和配置”视图 . . . . . . . . . . . . . . . . . . 106
4.7 在“引脚布局和配置”视图中启用安全性(仅适于STM32L5系列) . . . . . . 107
4.7.1 外设、GPIO EXTI和DMA请求的特权访问 . . . . . . . . . . . . . . . . . . . . . . 108
4.7.2 GPIO/外设/中间件的安全/非安全内核分配 . . . . . . . . . . . . . . . . . . . . . . 112
4.7.3 外设中断的NVIC和内核分配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
4.7.4 DMA(内核分配和特权访问设置) . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
4.7.5 GTZC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
4.7.6 OTFDEC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
4.8 “时钟配置”视图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116
4.8.1 时钟树配置功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
4.8.2 保护时钟资源(仅适于STM32L5系列) . . . . . . . . . . . . . . . . . . . . . . . 120
4.8.3 建议 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
目录 UM1718
4/361 UM1718 Rev 1 [English Rev 31]
4.8.4 STM32F43x/42x功率超载功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
4.8.5 时钟树词汇表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
4.9 “项目管理器”视图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
4.9.1 “项目”选项卡 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
4.9.2 “代码生成器”选项卡 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
4.9.3 “高级设置”选项卡 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
4.10 “导入项目”窗口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
4.11 “设置未使用 / 重置已使用GPIO”窗口 . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
4.12 “更新管理器”窗口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
4.13 附加软件组件选择窗口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
4.13.1 软件组件简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
4.13.2 筛选器面板 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
4.13.3 “软件包”面板 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
4.13.4 “组件相关性”面板 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
4.13.5 “详细信息和警告”面板 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
4.13.6 针对其他软件组件更新树形视图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
4.14 “关于”窗口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
5 STM32CubeMX工具 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
5.1 功耗计算器视图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
5.1.1 建立功耗系列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
5.1.2 配置功耗系列中的步骤 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
5.1.3 管理用户定义的功耗系列并审查结果 . . . . . . . . . . . . . . . . . . . . . . . . . . 164
5.1.4 功耗系列步骤参数词汇表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
5.1.5 电池词汇表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
5.1.6 SMPS特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
5.1.7 支持BLE(仅适于STM32WB系列) . . . . . . . . . . . . . . . . . . . . . . . . . . 175
5.1.8 功能示例(仅适于STM32MP1和STM32H7双核) . . . . . . . . . . . . . . . 176
5.2 DDR套件(仅适于STM32MP1系列) . . . . . . . . . . . . . . . . . . . . . . . . . . 178
5.2.1 DDR 配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
5.2.2 连接目标和加载DDR寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
5.2.3 DDR测试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
5.2.4 DDR调谐 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
6 STM32CubeMXC代码生成概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
6.1 仅使用HAL驱动程序生成STM32Cube代码(默认模式) . . . . . . . . . . . . 192
UM1718 Rev 1 [English Rev 31] 5/361
UM1718 目录
8
6.2 使用底层驱动程序生成STM32Cube代码 . . . . . . . . . . . . . . . . . . . . . . . . 194
6.3 自定义代码生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
6.3.1 FreeMarker用户模板的STM32CubeMX数据模型 . . . . . . . . . . . . . . . . 200
6.3.2 保存并选择用户模板 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
6.3.3 自定义代码生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
6.4 其他C项目生成设置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
7 双核MCU的代码生成(仅适于STM32H7双核产品系列) . . . . . . . . . . . . 207
8 启用Trustzone的代码生成(仅适于STM32L5系列) . . . . . . . . . . . . . . . 209
9 器件树生成(仅适于STM32MP1系列) . . . . . . . . . . . . . . . . . . . . . . . . . 213
9.1 器件树概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
9.2 STM32CubeMX器件树的生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
9.2.1 Linux内核的器件树生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
9.2.2 用于U-boot的器件树生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
9.2.3 用于TF-A的器件树生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
10 支持使用CMSIS-Pack 标准的其他软件组件 . . . . . . . . . . . . . . . . . . . . . . 219
11 教程1:使用STM32F4 MCU从引脚排列到生成项目C代码 . . . . . . . . . . . 222
11.1 创建一个新STM32CubeMX项目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
11.2 配置MCU引脚排列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
11.3 保存项目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
11.4 生成报告 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
11.5 配置MCU时钟树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
11.6 配置MCU初始化参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
11.6.1 初始条件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
11.6.2 配置外设 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
11.6.3 配置GPIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
11.6.4 配置DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
11.6.5 配置中间件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
11.7 生成完整的C项目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
11.7.1 设置项目选项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
11.7.2 下载固件包和生成C代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
11.8 构建和更新C代码项目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247