STM32CubeMXA安装和创建项目
STM32CubeMXA安装和创建项目
安装STM32CubeMXA
STM32CubeMX 运行环境搭建包含两个部分。首先是 Java 运行环境安装,其次是
STM32CubeMX 软件安装。
安装 JAVA 环境
对于 Java 运行环境,大家可以到 Java 官网 www.java.com 下载最新的 Java 软件
安装完成之后提示界面如下图 10.2.1.1 所示。
安装完 Java 运行环境之后,为了检测是否正常安装,我们可以打开 Windows 的命令输入
框,输入:java –version 命令,如果显示 Java 版本信息,则安装成功。提示信息如下图 10.2.1.2:
安装 STM32CubeMX
在安装了 Java 运行环境之后,接下来我们安装 STM32CubeMX 图形化工具
直接从 ST官方下载,下载地址为:https://www.st.com/en/development-tools/stm32cubemx.html。
接下来我们直接双击 SetupSTM32CubeMX-6.3.0.exe,安装步骤如下。
使用 STM32CubeMX 新建工程
步骤1: 打开 STM32CubeMX
步骤2:下载和关联的 STM32Cube 固件包
我们知道 STM32CubeMX 图形工具只有一种, STM32Cube 固件包却有多种,需要选择我
们工程对应的固件包。
为了方便,新建工程前,我们先来下载和关联 STM32Cube 固件包,点击 Help->Manage
embedded software packages,如图 10.3.2.1 所示。
然后弹出管理界面,在该窗口找到 STM32F4 列表选项,勾选 1.26.0 版本。这里选择 1.26.0
版本是因为我们的光盘的固件包是这个版本的。关联 STM32Cube 固件包有两个方法,如图
10.3.2.2 所示
方法二:下载好之后,会自动关联,所以不需要多讲什么。
方法一:点击后,弹出下面的窗口,然后选择光盘中的对应的固件包,注意这里是压缩包
的形式,如图 10.3.2.3 所示。
步骤3:新建工程
使用 STM32CubeMX 配置工程的一般步骤为:
- 工程初步建立
- HSE 和 LSE 时钟源设置
- 时钟系统(时钟树)配置
- GPIO 功能引脚配置
- Cortex-M4 内核基本配置(限定项)
- 生成工程源码
- 用户程序
接下来我们将按照上面 7 个步骤,依次教大家使用 STM32CubeMX 工具生成一个完整的工
程。
工程初步建立
方法一:依次点击“File”,“New Project”即可建新工程。如果之前打开过的话,左侧最近
打开的过程一列会有打开的工程列表,直接点击这些工程也可以打开。
方法二:直接点击 ACCESS TO MCU SELECTOR。
具体操作如图 10.3.3.1 所示
点击新建工程后,第一次可能会联网下载一些的文件,可能等待时间比较长,可以直接选
择取消即可。
之后都可以进入芯片选型界面,如图 10.3.3.3 所示。
选择具体的芯片型号,如图 10.3.3.4 所示。
选择了芯片型号后,弹出主设计界面,如图 10.3.3.5 所示。
HSE 和 LSE 时钟源设置
进入工程主设计界面后,首先设置时钟源 HSE 和 LSE。如图 10.3.3.6 所示。
图 10.3.3.6 中的标号 3 和 4,我们都选择了 Crystal/Ceramic Resonator,表示外部晶振作为
它们的时钟源。我们开发板的外部高速晶振和外部低速晶振分别是:8MHz 和 32.768KHz,所
以 HSE 时钟频率就是 8MHz,LSE 时钟频率就是 32.768KHz。
选项 Master Clock Output 1 用来选择是否使能 MCO1 引脚时钟输出,选项 Master Clock
Output 2 用来选择是否使能 MCO2 引脚时钟输出,最后一个选项 Audio Clock Input(I2S_CKIN)
用来选择是否从 I2S_CKIN(PC9)输入 I2S 时钟。这里大家要注意,因为选项 Master Clock Output
2 和选项 Audio Clock Input(I2S_CKIN)都是使用的 PC9 引脚,所以如果我们使能了其中一个,
那么另一个选项会自动显示为红色,也就是不允许配置,这就是 STM32CubeMX 的自动冲突检
测功能。
时钟系统(时钟树)配置
点击 Clock Configuration 选项卡即可进入时钟系统配置栏,如下图 10.3.3.7 所示:
进入 Clock Configuration 配置栏之后可以看到,界面展现一个完整的 STM32F4 时钟系统框
图。从这个时钟树配置图可以看出,配置的主要是外部晶振大小,分频系数,倍频系数以及选
择器。在我们配置的工程中,时钟值会动态更新,如果某个时钟值在配置过程中超过允许值,
那么相应的选项框会红色提示。
这里,我们将配置一个以 HSE 为时钟源,配置 PLL 相关参数,然后系统时钟选择 PLLCLK
为时钟源,最终配置系统时钟为 168MHz 的过程。同时,还配置了 AHB,APB1,APB 和 Systick
的相关分频系数。由于图片比较大,我们把主要的配置部分分两部分来讲解,第一部分是配置系统时钟,第二部分是配置 SYSTICK、AHB、APB1 和 APB2 的分频系数。首先我们来看看第
一部分配置如下图 10.3.3.8 所示:
我们把系统时钟配置分为七个步骤,分别用标号①~⑦表示,详细过程为:
① 时钟源参数设置:我们选择 HSE 为时钟源,所以我们要根据硬件实际的高速晶振频率
(这里我们是 8MHz)填写。
③ 时钟源选择:我们配置选择器选择 HSE 即可。
④ PLL1 分频系数 M 配置。分频系数 M 我们设置为 8。
④ PLL1 倍频系数 N 配置。倍频系数 N 我们设置为 336。
⑤ PLL1 分频系数 P 配置。分频系数 P 我们配置为 2。
⑥ 系统时钟时钟源选择:PLL,HSI 还是 HSE。我们选择 PLL,选择器选择 PLLCLK 即可。
⑦ 经过上面配置以后此时 SYSCLK=168MHz。
经过上面的 7 个步骤,就配置好 STM32F4 的系统时钟为 168MHz。接下来我们还需要配置
AHB、APB1、APB2 和 Systick 的分频系数,为 STM32 的片上外设或 M4 内核设置对应的工作
时钟,为后续使用这些硬件功能做好准备。配置如下图 10.3.3.9 所示:
AHB、APB1 和 APB2 总线时钟以及 Systick 时钟的来源于系统时钟 SYSCLK。其中 AHB
总线时钟 HCLK 由 SYSCLK 经过 AHB 预分频器之后得到,如果我们要设置 HCLK 为 168MHz
(最大为 168Mz),那么我们只需要配置图中标号的地方为 1 即可。得到 HCLK 之后,接下来我
们将在图标号⑨~⑪处同样的方法依次配置 Systick、APB1 和 APB2 分频系数分别为 1、4 和 2。
注意!systick 固定为 168MHz,配置完成之后,那么 HCLK=168MHz,Systick=168MHz,
PCLK1=42MHz,PCLK2=84MHz,这和之前例程配置的时钟频率是一样的。
以上方法是手动计算的方法,是为了帮助我们更好地去认识 STM32 时钟的配置方法,当然
CubeMX 也提供了更简单的方法:在图 10.3.3.9 的“HCLK(MHz)”位置,实际上是可以编辑的。
我们直接输入我们要的时钟频率,这里是 168MHz,按回车键,CubeMX 会帮我们提供一种设
置时钟频率和其它时钟的建议,选择是后会由软件自动配置好,当然只有启用外部的晶振后才能配置到 168MHz 的时钟。
GPIO 功能引脚配置
探索者STM32F407 开发板的 PF9 和 PF10 引脚各连接一个 LED 灯,我们来学习配置这两个 IO 口的相
关参数。这里我们回到 STM32CubeMX 的 Pinout&Configuration 选项,在搜索栏输入 PF9 后回
车,可以在引脚图中显示位置,如下图 10.3.3.11 所示:
接下来,我们在图 10.3.3.11 引脚图中点击 PF9,在弹出的下拉菜单中,选择 IO 口的功能
为 GPIO_Output。操作方法如下图 10.3.3.11 所示:
同样的方法,我们配置 PF10 选择功能为 GPIO_Oput 即可。设置好即可看到引脚从灰色变
成绿色,标识该管脚已经启用。这里我们需要说明一下,如果我们要配置 IO 口为外部中断引脚
或者其他复用功能,我们选择相应的选项即可。配置完 IO 口功能之后,还要配置 IO 口的速度,
上下拉等参数。这些参数我们通过 System Core 下的 GPIO 选项进行配置,如图 10.3.3.12 所示。
我们先配置 PF9,PF9 和 PF10 配置方法一样的。点击图 10.3.3.12 的④号框里面的 PF9,配
置如图 10.3.3.13 所示。
GPIO output level 是 IO 的初始值,由于 LED 一端接 VCC,另一端接 GPIO,故要点亮 LED
灯时,使 GPIO 输出低电平即可。为了一开始让 LED 灯熄灭,我们设置初始值输出高电平。
GPIO mode 我们已经在视图中配置为推挽输出了,这里不需要修改。
GPIO Pull-up/Pull-down 默认是无上下拉,我们这里用默认配置。
Maximum output speed 输出速度配置,默认是低速,我们设置为高速。
User Label 用户符号,我们可以给 PF9 起一个别名 LED0。
PF10 也是按照这样的方法配置,给 PF10 起一个别名 LED1。
配置 Debug 选项
由于 CubeMX 默认把 Debug 选项关闭了,这样会给我们带来麻烦:用 CubeMX 生成的工
程编译下载一次后,后续再次下载就会提示错误,因此我们要把 Debug 选项打开。这里有多种
选择,我们设置成图 10.3.3.14 所示的情况即可。
如果已经不小心关闭了 Debug 选项,那么下次下载的时候按住复位键,等到工程提示的时
候松开复位键即可,因为 STM32 的芯片默认复位上电时的 Debug 引脚功能是开启的。
推荐使用swd模式,因为省io接口
Project Manager
接下来我们学习怎么设置生成一个工程,如图 10.3.3.15 所示。选择 Project Manager-> Project
选项用来配置工程的选项,我们了解一下里面的信息。
Project Name:工程名称,填入工程名称(半角,不能有中文字符)
Project Location:工程保存路径,点击 Browse 选择保存的位置(半角,不能有中文字符)
Toolchain Folder Location:工具链文件夹位置,默认即可。
Application Structure:应用的结构,选择 Basic(基础),不勾选 Do not generate the main(),
因为我们要其生成 main 函数。
Toolchain/IDE:工具链/集成开发环境,我们使用 Keil,因此选择 MDK-ARM,Min Version 选
择 V5.27,这里根据 CubeMX 的版本可能会有差异,我们默认使用 V5 以上的版本即可。
Linker Settings 链接器设置:
Minimum Heap Size 最小堆大小,默认(大工程需按需调整)。
Minimum Stack Size 最小栈大小,默认(大工程需按需调整)。
MCU and Firmware Package 是 MCU 及固件包设置:
MCU Reference:目标 MCU 系列名称。
Firmware Package Name and Version:固件包名称及版本。
勾选 Use Default Firmware Location,文本框里面的路径就是固件包的存储地址,我们使用
默认地址即可。这样工程生成的设置就设置好了。
接下来我们配置生成代码的配置选项。打开 Project Manager-> Code Generator 选项,
Generated files 生成文件选项,勾选 Generate peripheral initialization as a pir of ‘.c/.h’ files per
peripheral,勾选这个选项的话将会将每个外设单独分开成一组.c、.h 文件,使得代码结构更加
的清晰,如图 10.3.3.16 所示
至此工程最基础配置就已经完成,点击蓝色按钮(SENERATE CODE)就可以生成工程。