当前位置: 首页 > article >正文

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 配置工程的一般步骤为:

  1. 工程初步建立
  2. HSE 和 LSE 时钟源设置
  3. 时钟系统(时钟树)配置
  4. GPIO 功能引脚配置
  5. Cortex-M4 内核基本配置(限定项)
  6. 生成工程源码
  7. 用户程序
    接下来我们将按照上面 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)就可以生成工程。
在这里插入图片描述


http://www.kler.cn/a/8157.html

相关文章:

  • 程控电阻箱应用中需要注意哪些安全事项?
  • LLMs之PDF:MinerU(将PDF文件转换成Markdown和JSON格式)的简介、安装和使用方法、案例应用之详细攻略
  • linux中docker命令大全
  • 设置中 wifi密码框被输入键盘遮挡的处理
  • 捋一捋相关性运算,以及DTD和NLP中的应用
  • 前端开放性技术面试—面试题
  • CSS 扫盲
  • React Hooks精讲+案例
  • 使用Jmeter进行http接口测试
  • 【Unity项目实战】从零手戳一个背包系统
  • uniCloud开发api接口服务
  • 最易学和最难学编程语言排行榜!
  • Hashtable是什么?它和Hashmap有什么区别?
  • 电动汽车热管理方案
  • Docker实现MySQL8主从读写分离【超简洁】
  • 美团后端开发暑期实习一面
  • 导入 Excel 文件时,抛出 413 (Request Entity Too Large) 错误
  • 【SQL开发实战技巧】系列(四十):Oracle12C常用新特性☞可以在同样的列(列组合)上创建多个索引以及可以对DDL操作进行日志记录
  • 软件测试岗,4 轮面试成功拿下字节 Offer..........
  • Linux学习[5]---shell脚本之bash脚本---判断选择循环
  • 高效自动化测试框架-优秀实践03-使用SeleniumGrid
  • unity,欧拉角
  • HashMap源码分析小结
  • python好玩的短代码
  • 不负期待,载誉收官 | 迅镭激光2023ITES深圳展圆满落幕!
  • 轻轻松松编译 Jmeter 源码,再也不求人