打印
[信息]

如何利用STM32CubeMX来自动生成STM32代码

[复制链接]
1324|31
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主


众所周知,ARM Cortex M 系列是 ARM 专门为单片机设计的内核。其中,STM32 系列的芯片可以算得上最成功的 ARM Cortex M 系列的芯片了。在最早期,ARM Cortex M 系列的核心刚用在单片机设计的时候,同时期也有很多厂商推出 ARM Cortex M 核心的单片机,但为什么 STM32 会如此之普及?其中的缘由,离不开当时意法半导体推出的方便的固件库。

为什么区区一个 STM32 的固件库可以有这么大的作用?这是因为早在 8 位机和 16 位机的时代,单片机内部的每一个外设的寄存器数量是有限的,我们即使一个一个去配置也没有多少工作量。但是 ARM Cortex M 核心,操作外设时需要配置的寄存器有很多,这样使用起来就会很麻烦。而意法半导体的固件库则可以将这些操作变得简单。

STD 库和 HAL 库之分
最早意法半导体推出的适配 STM32 的固件库被称为“STD 库”(标准库),我们用的最多的“STD 库”要属适配在 STM32F1 上面的“STM32F10x_StdPeriph_Lib_V3.5.0”,这个 3.5 版本的固件库到现在为止还是开发 STM32F1 系列单片机的首选。

同时期的 STM32 系列还包括了 F0,F1,F3,F4,L1 等子系列芯片,并且都为它们适配了“STD 库”。如图 1 所示。

图 1 STD 固件库的适配系列

大约到 2014 年左右,ST 在标准库的基础上又推出了 HAL 库。实际上,HAL 库和标准库本质上是一样的,都是提供底层硬件操作 API,而且在使用上也是大同小异。有过标准库基础的同学对 HAL 库的使用也很容易入手。个人认为 ST 官方之所以这几年大力推广 HAL 库,是因为 HAL 的结构更加容易整合 STM32Cube,而 STM32CubeMX 是 ST 这几年极力推荐的程序生成开发工具。所以这两年新出的 STM32 芯片,ST 直接只提供 HAL 库。在新型的 STM32 芯片中,用 HAL 库逐步淘汰标准库。

使用特权

评论回复
沙发
内政奇才|  楼主 | 2021-12-6 16:25 | 只看该作者
目前 STM32 所有的芯片都适配了 HAL 库。如同 2 所示。

图 2 HAL 库的适配系列

很多人从 STD 库转来做 HAL 库可能一开始觉得不习惯,但是配置起来其实和 STD 库也差不多。比较有意思的是,其实 HAL 库的代码可以直接使用 STM32CubeMX 这个软件来生成,STM32CubeMX 的操作方式非常简单,下面的内容就来介绍一些这个软件。

STM32CubeMX 安装
STM32CubeMX 是一个图形化的工具,也是配置和初始化 C 代码生成器(STM32 configuration and initialization C code generation),也就是自动生成开发初期关于芯片相关的一些初始化代码。

STM32CubeMX 的功能功能框图如图 3 所示。从图 3 中可以看得出,它包含了 STM32 所有系列的芯片,包含示例和样本(Examples and demos)、中间组件(Middleware Components)、硬件抽象层(Hardwaree abstraction layer)。

图 3 STM32CubeMX 简介

使用特权

评论回复
板凳
内政奇才|  楼主 | 2021-12-6 16:27 | 只看该作者
STM32CubeMX 的特性如下:
(1)直观的选择 STM32 微控制器

(2)图形化配置单片机:

引脚状态显示
图形化配置时钟树
可以动态确定参数设置的外围和中间件模式和初始化
功耗预测
(3)STM32CubeMX 可以自动生成主流 IDE 的工程代码,支持的 IDE,如 IAR、KEIL、GCC。

(4)可独立使用或作为 Eclipse 插件使用。

STM32CubeMX 是 ST 意法半导体的主动原创工具,它可以减轻开发的时间和费用。STM32CubeMX 集成了一个全面的软件平台,支持 STM32 每一个系列的 MCU 开发。这个平台包括 STM32Cube HAL(一个 STM32 的抽象层集成软件,确保 STM32 系列最大的移植性)。再加上兼容的一套中间件(RTOS、USB、TCP/IP 和图形),所有内嵌软件组件附带了全套例程。

STM32CubeMX 软件是运行于 JRE 上面的软件,因此我们在安装 STM32CubeMX 这个软件之前,现需要安装 JRE。我们可以通过 ST 官网直接下载,JRE 也可以从 Oracle 官网上面下载,当然也可以通过如下的链接,或者扫描图 4 中的二维码。

链接:https://pan.baidu.com/s/1fSGZ5J6u0fpBsaRDUZjAzg

提取码:qvrh

图 4 STM32CubeMX 和 JRE 下载网盘二维码

安装步骤为:
(1)  安装“jre-8u271-windows-x64”,直接默认安装即可,如图 5 所示。

图 5 安装 JRE

注意,如果 JRE 没有安装成功,则会弹出如图 6 所示的警告。

图 6 未安装 JRE 弹出警告

使用特权

评论回复
地板
内政奇才|  楼主 | 2021-12-6 16:28 | 只看该作者
(2) 解压“en.stm32cubemx_v6-1-0.zip”压缩文件,打开“en.stm32cubemx_v6-1-0”文件夹,然后双击运行“SetupSTM32CubeMX-6.1.0.exe”文件。接着直接勾选必要的选项,然后无脑点击下一步即可,如图 7 所示。

图 7 stm32cubemx 安装步骤

到此为止,stm32cubemx 软件就安装完成了,我们可以在桌面上看到 stm32cubemx 软件的快捷方式。如图 8 所示。

图 8 stm32cubemx 快捷方式


   STM32CubeMX 使用步骤(1)双击打开“stm32cubemx”软件,我们就可以看到图 9 中显示的界面了。

图 9 STM32CubeMX 启动界面

(2)点击“File”->“New Project”用来创建一个新的工程,如图 10 所示。

图 10 创建新工程

注意,如果出现了图 10 中间的数据下载提示,并且长时间没有下载完成时,可以点击“Cancel”去取消本次下载,不会产生影响。

使用特权

评论回复
5
内政奇才|  楼主 | 2021-12-6 16:30 | 只看该作者
(3)接下来我们就可以在这个界面上面选择芯片了,如图 11 所示,我们例子中选择了“STM32F429NG”,选择好芯片之后,点击“Start Project”。

图 11 器件选择

(4)点击了“Start Project”之后,就会弹出如图 12 所示的界面,到此为止,我们就可以正式配置这个芯片的资源了。

图 12 配置功能区域划分

这个软件整体配置流程比较傻瓜,操作起来很方便,这里就不详细阐述了。

(5)配置好工程之后,就可以导出代码了,点击右上方的“GENERATE CODE”即可生成代码,如果你第一次运行该软件,系统是会下载安装一些软件依赖包,只需要耐心等待安装完成即可。如图 13 所示。

图 13 软件模型下载

(6)如果软件包下载完成,那么就会跳入代码生成选项界面,如图 14 所示。

图 14 工程配置

使用特权

评论回复
6
内政奇才|  楼主 | 2021-12-6 16:31 | 只看该作者
(7)工程配置完成之后,再点击一下右上方的“GENERATE CODE”,即可产生最终的代码,我们代开代码文件夹就可以看到 Keil 的工程文件了,如图 15 所示。

图 15 最终生成的 Keil 代码

STM32CubeMX 是一款非常不错的软件,相信有它的支持,一定会大大降低 STM32 系列单片机的开发难度。

使用特权

评论回复
7
tpgf| | 2022-1-3 17:39 | 只看该作者
cube应该有手册的吧

使用特权

评论回复
8
keaibukelian| | 2022-1-3 17:42 | 只看该作者
真的非常好用

使用特权

评论回复
9
labasi| | 2022-1-3 17:42 | 只看该作者
后期编辑也非常方便

使用特权

评论回复
10
paotangsan| | 2022-1-3 17:43 | 只看该作者
我电脑的java环境不对

使用特权

评论回复
11
renzheshengui| | 2022-1-3 17:45 | 只看该作者
这个工具真的是功能强大

使用特权

评论回复
12
wakayi| | 2022-1-3 17:49 | 只看该作者
但是离开这个软件我就不会建立工程了

使用特权

评论回复
13
gygp| | 2022-1-6 16:12 | 只看该作者
如何用stm32cubemx 设置 FLASH读写配置

使用特权

评论回复
14
chenci2013| | 2022-1-6 16:12 | 只看该作者
STM32CubeMX可以用的库有几种

使用特权

评论回复
15
biechedan| | 2022-1-6 16:12 | 只看该作者
为什么stm32cubemx中没有集成emwin

使用特权

评论回复
16
wangdezhi| | 2022-1-6 16:12 | 只看该作者
如何使用STM32CubeMX配置ETH

使用特权

评论回复
17
isseed| | 2022-1-6 16:13 | 只看该作者
详细介绍STM32CUBE和KEIL-MDK相结合的开发方式

使用特权

评论回复
18
suzhanhua| | 2022-1-6 16:13 | 只看该作者
STM32CubeMX5.3只能用最新的库吗?

使用特权

评论回复
19
mituzu| | 2022-1-6 16:13 | 只看该作者
STM32CubeMX无法设置外部晶振吗

使用特权

评论回复
20
hellosdc| | 2022-1-6 16:14 | 只看该作者
运行stm32cubemx软件够用吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

152

主题

890

帖子

0

粉丝