STM32CubeMX的使用方法:使用STM32CubeMX生成基于STM32F103+HLA库的初始化代码,并在此基础上写出LED点灯程序
STM32CubeMX的介绍
当然可以!STM32CubeMX 是 STMicroelectronics(意法半导体) 提供的一款 图形化配置工具,专门用于 STM32 微控制器 的初始化代码生成。它可以帮助开发者快速配置 STM32 的外设、时钟、引脚映射,并自动生成相应的 C 代码,以便导入到 Keil、IAR、STM32CubeIDE 等开发环境中进行进一步开发。
主要功能
1. 图形化外设配置
- 直观的 GPIO 配置(输入/输出/复用功能等)
- 外设初始化(如 UART、I2C、SPI、ADC、TIM 等)
- 低功耗模式设置
2. 时钟树配置
- 提供 时钟树视图,可以直观地调整主时钟(HSE、HSI)、PLL 以及外设时钟,自动计算频率并检测是否超限。
3. 中间件支持
- USB、FreeRTOS、LWIP(以太网协议栈)、FatFS(文件系统)等
- 直接配置和启用 ST 官方提供的 HAL(硬件抽象层)库
4. 代码生成
- 自动生成 STM32 HAL 库 或 LL(低层)库 初始化代码
- 代码可以直接导入到 Keil、IAR、STM32CubeIDE 等环境进行编译和调试
5. MCU 选择和引脚映射
- 提供芯片型号选择界面,支持 STM32 全系列
- 支持 引脚重映射(Remap),避免冲突
6. 板级支持包(BSP)
- 可选 官方开发板(如 NUCLEO、Discovery 板)
- 自定义用户自己的 PCB 设计
使用流程
- 选择 MCU/开发板(如 STM32F103C8T6)
- 配置引脚和外设(如 USART2、I2C1、GPIO)
- 配置时钟树(如 HSE 8MHz,PLL 72MHz)
- 启用中间件(如 USB CDC、FreeRTOS)
- 生成代码(选择 Keil/STM32CubeIDE 工程)
- 导入 IDE 并编译/烧录
适合哪些开发者?
- 初学者:不熟悉寄存器配置,想快速上手 STM32
- 嵌入式开发者:希望提高开发效率,减少重复的初始化代码
- 有经验的工程师:用于快速原型开发和测试
STM32CubeMX vs 传统寄存器编程
对比项 | STM32CubeMX (HAL/LL) | 传统寄存器编程 |
---|---|---|
开发效率 | 高,自动生成代码 | 低,需要手写寄存器配置 |
代码可读性 | 清晰,基于 HAL API | 复杂,涉及大量寄存器 |
灵活性 | 适中,HAL 封装了一些细节 | 高,可完全控制底层 |
适合场景 | 快速开发,通用项目 | 性能优化、底层驱动开发 |
小结结
STM32CubeMX 是 STM32 开发中 非常实用的工具,可以大大降低外设配置的难度,提高开发效率。如果你想快速完成 STM32 工程初始化,强烈建议使用它!🎯
确定是对哪个GPIO口进行操作
点此查看视频 的03分50秒开始看。
结论是我们需要对PC组的第13个引脚进行操作。
利用STM32CubeMX生成基于STM32F103+HLA库的初始化代码
打开STM32CubeMX
首先打开STM32CubeMX:
选择芯片(STM32F103C8T6)
然后点击中间的“ACCESS TO MCU SELECTOR”:
由于我们的主控芯片的型号是:STM32F103C8T6,所以我们在下面的位置搜索“STM32F103C8T6”:
然后在搜索结果中选择它(双击):
Project项配置
点击上图中的“Project Manger”切换到工程生成配置下的“Project”项:
然后再点击“Project Manger”下的“Code Gnerator”项:
我们需要把c文件和h头文件分开,所以勾选下面这个选项:
Pinout&Configuration项配置
接下来对GPIO的PC组的第13个引脚进行选择配置。
首先切换到“Pinout&Configuration项”:
然后按下面的操作找到引脚:
设置成输出引脚:
这样引脚的配置就完了。
生成代码
点击右上角的GENERATE CODE
同意下载它的资料包:
生成完毕,点击上图中的Close关闭,然后我们去工程目录中去看有没有相关生成。
可见有了。
生成的代码分析
点此查看视频 的06分23秒开始看。
STM32CubeMX生成的工程可以修改更新
在 STM32CubeMX修改相关配置后,再点击GENERATE CODE
就更新了。在写main函数代码的时候把代码写到下面这些位置,那么自己写的代码不会丢失:
但得在配置的时候勾选下面这个选项:
打开STM32CubeMX生成的工程,添加自己的代码
添加代码
在main函数里添加下面这两句代码:
volatile int val = 1;while (1){HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, (GPIO_PinState)val);HAL_Delay(500); val = !val;/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */
}
注意:HAL_GPIO_WritePin()
的第三个参数应该是 枚举类型 GPIO_PinState
,而 val
是 int
类型,所以要显示转换一下,否则会报警告。
设置好ST-Link Debugger(烧写器)
然后按照博文 https://blog.csdn.net/wenhao_ir/article/details/146691445 设置好ST-Link Debugger(烧写器)
编译,烧写,运行
然后编译:
烧写并运行:
烧写完成后,点击复位按键,即发现绿灯在闪烁了。
如何在STM32CubeMX中打开之前由STM32CubeMX生成的项目?
在STM32CubeMX中打开下图中这个文件即可: