尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

STM32CubeMX使用

STM32CubeMX使用 目录一、STM32CubeMX 简介二、开发环境搭建2.1 安装JAVA环境2.2 安装STM32CubeMX2.3 安装关联固件包三、STM32CubeMX使用建议四、使用STM32CubeMX新建工程4.1 新建工程4.2 时钟源设置4.3 时钟系统时钟树配置4.4 GPIO 功能引脚配置4.5 配置Debug选项4.6 生成工程源码结语一、STM32CubeMX 简介STM32CubeMX是ST意法半导体近几年来大力推荐的STM32芯片图形化配置工具允许用户使用图形化向导生成C初始化代码可以大大减轻开发工作时间和费用。由于HAL库具有低耦合、通用、抽象了硬件层使得开发者无需太过关注硬件驱动的实现使得开发更加的简单快速更容易维护因此被越来越多的产品所使用。STM32CubeMX 具有如下特性①直观的选择 MCU 型号可指定系列、封装、外设数量等条件;②微控制器图形化配置③自动处理引脚冲突④动态设置时钟树生成系统时钟配置代码⑤可以动态设置外围和中间件模式和初始化⑥功耗预测⑦C 代码工程生成器覆盖了 STM32微控制器初始化编译软件如 IARKEILGCC⑧可以独立使用或者作为 Eclipse 插件使用⑨可作为 ST的固件包、芯片手册等的下载引擎注意使用STM32CubeMX生成的是HAL库二、开发环境搭建STM32CubeMX运行环境搭建包含两个部分。首先是Java运行环境安装其次是STM32CubeMX软件安装因为STM32CubeMX依赖于Java。2.1 安装JAVA环境下载链接https://www.java.com/zh-CN/双击安装包即可默认安装安装完成如下安装完成后按快捷键WINR打开运行输入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使用建议使用 CubeMX 的环境搭建工程工程文件夹路径、文件名不要带任何中文及中文字符否则会遇到各种报错造成错误的原因是 CubeMX 对中文的支持不友好且生成的 MDK 工程默认通过工程中的CMSIS 那个绿色的控件选择启动文件而不是直接添加启动文件(startup_xxx.s)到我们的工程中而有中文路径时就会找不到有两个解决办法①用 CubeMX 生成的工程不要放置在包含中文路径的文件夹下②添加启动文件到我们的工程中我们新建一个 Application/MDK-ARM 分组把startup_stm32f407xx.s 添加到这个分组如图所示关于配置的文件 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 的过程。同时还配置了 AHBAPB1APB 和 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 即可。⑦ 经过上面配置以后此时 SYSCLK168MHz。经过上面的 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配置完成之后那么 HCLK168MHzSystick168MHzPCLK142MHzPCLK284MHz4.4 GPIO 功能引脚配置回到 STM32CubeMX的PinoutConfiguration选项在搜索栏输入PE0后回车接下来我们在引脚图中点击 PE0在弹出的下拉菜单中选择 IO 口的功能为 GPIO_Output。设置好即可看到引脚从灰色变成绿色标识该管脚已经启用。配置完 IO 口功能之后还要配置 IO 口的速度上下拉等参数这些参数我们通过 System Core下的GPIO选项进行配置我们先配置 PE0点击④号框里面的 PE0。GPIO output levelIO 的初始值由于 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-ARMMin 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 latest available 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物联网打基础
返回列表