STM32CubeMX是一个图形化的工具,也是配置和初始化C代码生成器(STM32 configuration and initialization C code generation),也就是自动生成开发初期关于芯片相关的一些初始化代码。
从上图可以看得出,它包含了STM32所有系列的芯片,包含示例和样本(Examples and demos)、中间组件(Middleware Components)、硬件抽象层(Hardwaree abstraction layer)。
STM32CubeMX的特性如下:
1.直观的选择 STM32 微控制器。
2.微控制器图形化配置:
l 自动处理引脚冲突
l 动态设置确定的时钟树
l 可以动态确定参数设置的外围和中间件模式和初始化
l 功耗预测
3.C代码工程生成器覆盖了STM32 微控制器初始化编译软件,如IAR、KEIL、GCC。
4.可独立使用或作为 Eclipse 插件使用。
STM32CubeMX是ST意法半导体的主动原创工具,它可以减轻开发的时间和费用。STM32CubeMX集成了一个全面的软件平台,支持STM32每一个系列的MCU开发。这个平台包括 STM32Cube HAL(一个 STM32 的抽象层集成软件,确保STM32 系列最大的移植性)。再加上兼容的一套中间件(RTOS、USB、TCP/IP 和图形),所有内嵌软件组件附带了全套例程。
更多关于STM32CubeMX介绍可以进入ST官网查看。
可以直接去意法半导体公司官网下载:
STM32CubeMX - STM32Cube初始化代码生成器 - STMicroelectronics
下载完成后,一路Next即可。
该软件本身是用Java语言编写的,所以需要JRE环境支持,早起版本要自己下载安装,现在一般都是软件自带了。
设置CubeMx资源路径,用于存放下载和更新的固件库
Help -> Updater Settings
资源路径
注意:资源路径中不能有中文出现
安装HAL库
在线安装
打开安装好的 STM32CubeMX 软件 点上面的Help -> Manage embedded software packages
选择需要安装的芯片型号和版本
安装完成后如下图:
下载完成后,在刚才创建的固件库中会看到如下内容:
这就是HAL库。
此部分内容在HAL专题篇中讲解,不赘述。
离线安装
HAL库下载
直接导入安装包 Help -> Manage embedded software packages ->From Local 选择离线包即可
使用CubeMx生成HAL工程
新建工程
选择芯片型号
设置调试器,默认是关闭的,如果不使用调试器关闭即可
如果不使用调试器,即不开启调试端口。
那么可以通过串口下载程序。但是不支持调试了。
另外还可以选择是否启用唤醒功能System Wake-Up(端口PA0),具体见数据手册关于唤醒的部分。如果不用唤醒,则其端口可用作普通IO口。
唤醒功能主要和低功耗模式有关。
时基源:SysTick通常是给操作系统用的,因为操作系统需要通过时钟来进行调度等功能。如果是裸机,则可以选择该时基源,否则,选用其它的定时器。
设置外部时钟
默认是使用的内部时钟
打开外部时钟注意:如果disable外部时钟,则默认使用的是内部时钟HSI和LSI
另外还有两个选项
BYPASS Clock Source (旁路时钟源) 指的就是有源晶振,无需使用芯片内部的时钟驱动组件,直接从外界导入时钟信号。
Crystal/Ceramic Resonator 是选择外部晶振;
如果你的开发板上STM32采用外部晶振,那么就不能选择BYPASS Clock Source (旁路时钟源)模式,否则STM32将会工作不正常。
还有个勾选,Master Clock Output是时钟输出,具体可参考时钟树,有个时钟输出功能。
设置时钟频率
将时钟评率设置为72MHz,有不明白的可以看STM32时钟系统的配置寄存器和源码分析
注意,时钟越快功耗越大,应根据实际需要选择,并不是越大越好。
设置LED引脚
设置引脚模式
设置工程
Code Generator可根据实际需要去勾选
生成工程
注意工程路径中不要有中文,要不然工程创建会有错误:
开始编程
打开工程
打开的功能目录如下:
此部分内容在HAL专题篇中讲解,不赘述。
注意:编写代码时需要编写在一对注释之间,这样再次生成代码时不会被覆盖。
比如:在mian.c文件的while循环中加入以下代码
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_12); HAL_Delay(1000);如下图所示:
编译下载测试
功耗评估
STM32CubeMX提供了一个功耗评估工具选项,可根据当前用户选择的微控制器、电池类型等参数对平均电流、电池预期寿命、平均DMIP、工作的最高环境温度进行评估,且可根据所得的评估结果进一步调整时钟频率、低功耗模式以及外设来进一步降低系统功耗。此外,针对不同的功耗序列转换,STM32CubeMX还提供了转换检测器,使能后可检测配置的功耗序列中无效的转换,并在用户添加新的功耗序列时进行提示。
功耗评估工具及使能模式切换检测器创建功耗序列
在创建新的序列前需设置好VDD值,还可以选择相应的电池模型,用于后续评估电池的预期使用寿命。
添加新的电池模型点击“New Step”创建并编辑新的序列。序列编辑窗口中选择"Enable IPs from Pinout"可从"Pinout & Configuration"选项配置中导入当前工程配置的外设,并根据需要选择功耗模式、CPU频率、时钟配置等参数。此外,在选项设置(Optional Settings)中可对当前序列的持续时间、额外的电流消耗(如外围电路中的设备消耗)进行设置。当前序列消耗的电流在"Results"项中进行显示。
功耗序列的创建和编辑功耗序列视图
功耗序列视图可根据所添加的功耗序列按序列步骤、运行和低功耗模式、外设(数字/模拟)消耗等进行显示。并给出了平均电流、电池预期寿命、平均DMIP、工作的最高环境温度的评估结果。
功耗序列视图
用MX生成初始代码后,用户代码要写在类似的这两行开始和结束注释之间:
否则,修改MX再生成的时候,注释之外的用户代码都会被冲掉。
用MX配置引脚时,标签名不要随便取,这个名字,会在自动生成的相关代码中被使用。
相对应的代码中:
MX配置后,初始的main中,做了哪些事情?