文章目录
- [1. 安装 STM32CubeMX](#1. 安装 STM32CubeMX)
- [2. 安装 MCU 固件包](#2. 安装 MCU 固件包)
-
- [2.1 设置软件库文件路径](#2.1 设置软件库文件路径)
- [2.2 管理嵌入式软件包](#2.2 管理嵌入式软件包)
- [3. 使用 CubeMX 新建项目](#3. 使用 CubeMX 新建项目)
-
- [3.1 选择 MCU 创建项目](#3.1 选择 MCU 创建项目)
- [3.2 MCU 图形化配置界面](#3.2 MCU 图形化配置界面)
-
- [3.2.1 引脚与配置](#3.2.1 引脚与配置)
- [3.2.2 时钟配置](#3.2.2 时钟配置)
- [3.2.3 项目管理](#3.2.3 项目管理)
- [4. 点亮 LED 灯](#4. 点亮 LED 灯)
-
- [4.1 硬件电路](#4.1 硬件电路)
- [4.2 CubeMX 设置](#4.2 CubeMX 设置)
1. 安装 STM32CubeMX
注意事项:
- 安装目录不能带有汉字、空格和非下划线的符号,因为 CubeMX 对中文的支持不太好。
- CubeMX 需要用到 Java 运行环境 JRE,建议开发人员直接下载安装 JDK。
我设置的安装目录:D:\IDE\ST\STM32CubeMX
2. 安装 MCU 固件包
2.1 设置软件库文件路径

- 菜单项:Help --> Connection & Updates

- MCU 固件包和扩展包安装路径,建议设置后就不再更改,我设置的路径:D:\IDE\ST\STM32Cube\Repository
- 设置 CubeMX 的更新方式为:手动检查更新
- 设置 CubeMX 启动时是否自动刷新已安装软件库的数据和文档为:不在 CubeMX 启动时自动刷新
2.2 管理嵌入式软件包
- 菜单项:Help --> Manage embedded software packages

找到所需系列芯片,例如:STM32F4,选择最新版本,点击 Install 安装。
在路径 D:\IDE\ST\STM32Cube\Repository\STM32Cube_FW_F4_V1.28.3 下面可以看到安装好的固件库。
3. 使用 CubeMX 新建项目
3.1 选择 MCU 创建项目
- 菜单项:File --> New Project

- 按照筛选条件选择 MCU,如果已知具体型号,可以在搜索框直接输入。
- 通过筛选或搜索的 MCU 列表,会显示出具体型号,封装,Flash,RAM 等参数,单击星号收藏,双击MCU型号进入项目管理视图。
- MCU 资料显示区域。
3.2 MCU 图形化配置界面

- 引脚与配置:对 MCU 的系统内核,外设,中间件和引脚进行配置。
- 时钟配置:通过时钟树对 MCU 的各个时钟信号频率配置。
- 项目管理:项目的一些设置。
- 工具:进行功耗计算等。
3.2.1 引脚与配置
- 组件列表:MCU 可以配置的系统内核,外设和中间件列表,可分组显示或者按照字母顺序显示。

- 组件的模式和配置:例如组件选中 RCC,可以在上方设置模式,下方配置参数。

- 引脚视图:显示各引脚设置情况。

- 亮黄色引脚:电源或接地引脚,例如:VDD。
- 黄绿色引脚:一种功能的系统引脚,例如:NRST,这些引脚不能进行配置。
- 未配置功能的引脚为灰色。
- 已经配置功能的引脚为绿色。
在引脚上单击鼠标左键,弹出引脚功能选择菜单,例如引脚在 PF9 上单击时,可以看到 PF9 可以作为 GPIO,ADC,定时器等使用:

将 PF9 引脚设置好功能后,在引脚上单击鼠标右键,会调出一个快捷菜单。

- Enter User Label:输入用户标签,标签将取代原来的引脚信号名称。
- Signal Pinning/Unpinning:信号绑定/解绑,将引脚与功能绑定/解绑。
- 系统视图:显示 MCU 已经设置的各种组件。

3.2.2 时钟配置
先设置 RCC 的模式,将 HSE 和 LSE 都设置为使用外部晶振,并且启用 MCO1 和 MCO2,MCO2 与音频时钟输入不能同时使用。

启用 RTC。

时钟源,时钟信号或选择器的作用如下:

- HSE 时钟源:设置为使用外部晶振,开发板的是 8MHz 晶振,填入8。
- HSI RC 振荡器:频率为 16MHz 的时钟信号。
- PLL 时钟源选择器:输入时钟选择 HSE 或 HSI,通过分频和倍频产生时钟信号,输出时钟信号有 PLLCLK,48MHz 时钟信号,PLLI2S。
- 系统时钟选择器:系统时钟 SYSCLK 是为 MCU 大部分组件提供时钟信号的时钟源,输入时钟有 HSE,HSI,PLLCLK。Enable CSS 按钮可以启用时钟安全系统,使用 HSE 时该按钮才有效,当 HSE 发生故障,会发出一个 CSSI 的中断信号,自动切换到 HSI 作为时钟源。
- 系统时钟 SYSCLK:文本框不能修改它的值,该时钟经过 AHB 预分频器后生成 HCLK 时钟信号。
- HCLK 时钟:CPU 的时钟信号,为 AHB 总线,内核,APB1 总线和 APB2 总线提供时钟,HCLK 最高频率 168MHz,可以在文本框修改,例如输入 72 后,软件会自动进行修改。

- 音频时钟输入:在 RCC 中去掉 MCO2,选择 Audio Clock Input(I2S_CKIN),就可以在此输入一个外部的时钟源作为 I2S 接口的时钟信号。


- I2S 接口时钟源选择器:从两个输入时钟 PLLI2SCLK,I2S_CKIN 里面选择一个作为 I2S 接口的时钟信号。
- MCO 时钟输出和选择器:MCO 时 MCU 为外部设备提供的时钟源。

- LSE 时钟源:固定为 32.768MHz,作为 RTC 的时钟源,经过多次分频后,可以得到精确的 1Hz 信号。
- LSI RC 振荡器:MCU 内部产生的 32KHz 的时钟信号,可以为 RTC 和 IWDG 提供时钟信号。
- RTC 时钟选择器:可选时钟源 LSI,LSE 和 HSE,要使 RTC 精度高,应该选择 32.768MHz 的 LSE 作为时钟源。
3.2.3 项目管理
- Project 页面:项目名称,保存路径,导出代码的 IDE 软件等。

- C 语言程序需要一个 main() 函数,不勾选。
- 选择导出的 C 语言程序的工具链或 IDE 软件。
- 其余选项暂时保持默认。
- Code Generator 页面:设置生成 C 语言代码的一些选项。

- 勾选,为每一种外设生成的初始化代码将会有 .c和.h 两个文件。
- 设置所有自由引脚类型为 Analog,这样可以优化功耗。
- 启用 Full Assert ,HAL 库中每个函数都会对函数的输入参数进行检查,如果检查出错,会返回出错代码的文件名和所在行。
- Advanced Settings 页面,生成 C 语言代码的一些高级设置,例如:外设初始化代码是使用 HAL 库还是 LL 库。

- 给组件选择使用HAL库还是LL库。
- 勾选此项,在main()函数的外设初始化部分不会调用这个函数,但是函数的完整代码还是会生成的,如何调用由编程者自己决定。
- 是否在函数原型前面加上关键字 static,使文件变为文件内的私有函数。如果在 Code Generator 页面勾选了 Generate peripheral initialization as a pair of '.c/.h' files per peripheral,则无论是否勾选 Visibility(Static) ,外设的初始化原型函数前面都不会加 static 关键字,因为在 .h文件里声明的函数原型对外界就是可见的。
4. 点亮 LED 灯
4.1 硬件电路


从原理图中可以看出,控制引脚 PF9,PF10为GPIO输出引脚,且输出低电平可以点亮 LED 灯。
4.2 CubeMX 设置
-
PF9 和 PF10 设置为推挽输出低电平,写上标签 LED0 和 LED1。


-
时钟设置:HSE 选择晶振 8MHz,HCLK 设置为168MHz。

-
组件 SYS 设置为串行调试接口

-
设置项目名称和生成 .c和.h对。


-
点击生成代码。

