STM32CubeMX使用


一、STM32CubeMX 简介

  STM32CubeMX是ST意法半导体近几年来大力推荐的STM32芯片图形化配置工具,允许用户使用图形化向导生成C初始化代码,可以大大减轻开发工作,时间和费用。由于HAL库具有低耦合、通用、抽象了硬件层,使得开发者无需太过关注硬件驱动的实现,使得开发更加的简单快速,更容易维护,因此被越来越多的产品所使用。STM32CubeMX 具有如下特性:

①直观的选择 MCU 型号,可指定系列、封装、外设数量等条件;
②微控制器图形化配置;
③自动处理引脚冲突;
④动态设置时钟树,生成系统时钟配置代码;
⑤可以动态设置外围和中间件模式和初始化;
⑥功耗预测;
⑦C 代码工程生成器覆盖了 STM32微控制器初始化编译软件,如 IAR,KEIL,GCC;
⑧可以独立使用或者作为 Eclipse 插件使用;
⑨可作为 ST的固件包、芯片手册等的下载引擎;

注意:使用STM32CubeMX生成的是HAL库

二、开发环境搭建

  STM32CubeMX运行环境搭建包含两个部分。首先是Java运行环境安装,其次是
STM32CubeMX软件安装,因为STM32CubeMX依赖于Java。

2.1 安装JAVA环境

下载链接:https://www.java.com/zh-CN/

  双击安装包即可默认安装,安装完成如下:
在这里插入图片描述
  安装完成后,按快捷键WIN+R打开运行,输入cmd回车打开终端,在里输入java -version,如显示Java版本信息确认安装成功
在这里插入图片描述
在这里插入图片描述

2.2 安装STM32CubeMX

下载地址:www.st.com/stm32cube

  接下来我们直接双击SetupSTM32CubeMX-6.2.0-Win.exe,点击Next
在这里插入图片描述
  接受本许可协议
在这里插入图片描述
  勾选第一项即可
在这里插入图片描述
  修改安装路径
在这里插入图片描述
  创建快捷方式
在这里插入图片描述
  Next继续
在这里插入图片描述
  安装完成Done
在这里插入图片描述
  打开
在这里插入图片描述

2.3 安装关联固件包

  STM32CubeMX只是图形工具,想要生成对应工程还需要对应的STM32Cube固件包,所以新建工程前,我们先来下载和关联 STM32Cube 固件包,点击 Help->Manage embedded software packages
在这里插入图片描述
  然后弹出管理界面,在该窗口找到 STM32F4 列表选项,勾选 1.26.0 版本。
在这里插入图片描述

方法一:下载好之后,会自动关联
方法二:点击后,弹出下面的窗口,然后选择光盘中的对应的固件包,注意这里是压缩包的形式
在这里插入图片描述
  关联本地 STM32Cube 固件包
在这里插入图片描述
  关联好固件包我们就可以开始新建工程了
在这里插入图片描述

三、STM32CubeMX使用建议

  1. 使用 CubeMX 的环境搭建工程,工程文件夹路径、文件名不要带任何中文及中文字符,否则会遇到各种报错:
    在这里插入图片描述
    造成错误的原因是 CubeMX 对中文的支持不友好,且生成的 MDK 工程默认通过工程中的CMSIS 那个绿色的控件选择启动文件而不是直接添加启动文件(startup_xxx.s)到我们的工程中,而有中文路径时就会找不到,有两个解决办法:
    ①用 CubeMX 生成的工程不要放置在包含中文路径的文件夹下
    ②添加启动文件到我们的工程中,我们新建一个 Application/MDK-ARM 分组,把startup_stm32f407xx.s 添加到这个分组,如图所示:
    在这里插入图片描述
  2. 关于配置的文件 CubeMX 工程(.ioc 后缀)名字有中文的情况,我们建议重新新建工程或者把生成的工程文件重命名为英文。因为带中文的 CubeMX 工程生成的 MDK 的 Output 目录有中文,MDK 也会报错,尽管可以重新设置 MDK 工程的 Output 目录和添加1所描述步骤的启动文件,使本次编译通过,但下次重新用 CubeMX 生成工程时,仍旧需要重复修改配置。

四、使用STM32CubeMX新建工程

4.1 新建工程

方法一:依次点击“File”,“New Project”即可建新工程。如果之前打开过的话,左侧最近打开的过程一列会有打开的工程列表,直接点击这些工程也可以打开。
方法二:直接点击 ACCESS TO MCU SELECTOR。
在这里插入图片描述
  点击新建工程后,第一次可能会联网下载一些的文件
在这里插入图片描述
  进入芯片选型界面,选择具体的芯片型号
在这里插入图片描述

4.2 时钟源设置

  进入工程主设计界面后,首先设置时钟源 HSE 和 LSE。图中的标号4和5,我们都选择了 Crystal/Ceramic Resonator,表示外部晶振作为它们的时钟源。选项 Master Clock Output 1 用来选择是否使能 MCO1 引脚时钟输出。
在这里插入图片描述

4.3 时钟系统(时钟树)配置

  点击 Clock Configuration选项卡即可进入时钟系统配置栏,从这个时钟树配置图可以看出,配置的主要是外部晶振大小,分频系数,倍频系数以及选择器。在我们配置的工程中,时钟值会动态更新,如果某个时钟值在配置过程中超过允许值,那么相应的选项框会红色提示。
在这里插入图片描述
  这里,我们将配置一个以 HSE 为时钟源,配置 PLL 相关参数,然后系统时钟选择 PLLCLK为时钟源,最终配置系统时钟为 168MHz 的过程。同时,还配置了 AHB,APB1,APB 和 Systick的相关分频系数。由于图片比较大,我们把主要的配置部分分两部分来讲解,第一部分是配置系统时钟,第二部分是配置 SYSTICK、AHB、APB1 和 APB2 的分频系数。
在这里插入图片描述
  我们把系统时钟配置分为七个步骤,分别用标号①~⑦表示,详细过程为:

① 时钟源参数设置:我们选择 HSE 为时钟源,所以我们要根据硬件实际的高速晶振频率(这里我们是 8MHz)填写。
② 时钟源选择:我们配置选择器选择 HSE 即可。
③ PLL1 分频系数 M 配置。分频系数 M 我们设置为 4。
④ PLL1 倍频系数 N 配置。倍频系数 N 我们设置为 168。
⑤ PLL1 分频系数 P 配置。分频系数 P 我们配置为 2。
⑥ 系统时钟时钟源选择:PLL,HSI 还是 HSE。我们选择 PLL,选择器选择 PLLCLK 即可。
⑦ 经过上面配置以后此时 SYSCLK=168MHz。

  经过上面的 7 个步骤,就配置好 STM32F4 的系统时钟为 168MHz。接下来我们还需要配置AHB、APB1、APB2 和 Systick 的分频系数,为 STM32 的片上外设或 M4 内核设置对应的工作时钟,为后续使用这些硬件功能做好准备。
在这里插入图片描述
  AHB、APB1 和 APB2 总线时钟以及 Systick 时钟的来源于系统时钟 SYSCLK。其中 AHB总线时钟 HCLK 由 SYSCLK 经过 AHB 预分频器之后得到,如果我们要设置 HCLK 为168MHz(最大为 168MHz),那么我们只需要配置图中标号的地方为 1 即可。得到 HCLK 之后,接下来我们将在图标号⑨~⑪处同样的方法依次配置 Systick、APB1 和 APB2 分频系数分别为 1、4和2。注意!systick 固定为 168MHz,配置完成之后,那么 HCLK=168MHz,Systick=168MHz,PCLK1=42MHz,PCLK2=84MHz

4.4 GPIO 功能引脚配置

  回到 STM32CubeMX的Pinout&Configuration选项,在搜索栏输入PE0后回车
在这里插入图片描述
  接下来,我们在引脚图中点击 PE0,在弹出的下拉菜单中,选择 IO 口的功能为 GPIO_Output。设置好即可看到引脚从灰色变成绿色,标识该管脚已经启用。
在这里插入图片描述
  配置完 IO 口功能之后,还要配置 IO 口的速度,上下拉等参数,这些参数我们通过 System Core下的GPIO选项进行配置
在这里插入图片描述
  我们先配置 PE0,点击④号框里面的 PE0。
在这里插入图片描述

  • GPIO output level:IO 的初始值,由于 LED 一端接 VCC,另一端接 GPIO,故要点亮 LED灯时,使 GPIO 输出低电平即可。为了一开始让 LED 灯熄灭,我们设置初始值输出高电平。
  • GPIO mode:我们已经在视图中配置为推挽输出了,这里不需要修改。
  • GPIO Pull-up/Pull-down:默认是无上下拉,我们这里用默认配置。
  • Maximum output speed:输出速度配置,默认是低速,我们设置为高速。
  • User Label:用户符号,我们可以给 PE0 起一个别名 LED0。

4.5 配置Debug选项

  由于CubeMX默认把Debug选项关闭了,这样会给我们带来麻烦:用 CubeMX 生成的工程编译下载一次后,后续再次下载就会提示错误,因此我们要把 Debug 选项打开。
在这里插入图片描述
  如果已经不小心关闭了 Debug 选项,那么下次下载的时候按住复位键,等到工程提示的时候松开复位键即可,因为 STM32 的芯片默认复位上电时的 Debug 引脚功能是开启的。

4.6 生成工程源码

  选择 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:固件包名称及版本。

在这里插入图片描述
  接下来我们配置生成代码的配置选项。打开 Project Manager-> Code Generator 选项,Generated files 生成文件选项,勾选 Generate peripheral initialization as a pir of ‘.c/.h’files per peripheral,勾选这个选项的话将会将每个外设单独分开成一组.c、.h 文件,使得代码结构更加
的清晰
在这里插入图片描述
  至此工程最基础配置就已经完成,点击蓝色按钮(SENERATE CODE)就可以生成工程
在这里插入图片描述
  完整的 STM32F4 工程就已经生成完成
在这里插入图片描述

  • Drivers 文件夹存放的是 HAL 库文件和 CMSIS 相关文件。
  • MDK-ARM 下面存放的是 MDK 工程文件。
  • Src 文件夹下面存放的是工程必须的部分源文件。
  • Template.ioc 是 STM32CubeMX 工程文件,双击该文件就会在 STM32CubeMX 中打开。

  在弹出来的窗口中点击 Open Project 就打开 MDK 工程
在这里插入图片描述


结语

  使用CubeMX 可以帮助我们快速搭建工程,使用户专注于应用开发,但 STM32 的开发与硬件密切相关,对 STM32 开发来说,抛开底层只专注做应用并不实际,毕竟无法使用一套通用设计来满足不同用户的需求。
  本篇只讲CubeMX的基础使用,不对CubeMX的使用过多讲解。正常项目基于寄存器版或者标准库,学习CubeMX生成的HAL库主要是为了后续的电机FOC矢量控制与RT-Threa物联网打基础

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

别问,问就是全会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值