加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

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

2020/12/18
636
阅读需 10 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

文 /Edward

众所周知,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 库逐步淘汰标准库。

目前 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 简介

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 弹出警告

(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”去取消本次下载,不会产生影响。

(3)接下来我们就可以在这个界面上面选择芯片了,如图 11 所示,我们例子中选择了“STM32F429NG”,选择好芯片之后,点击“Start Project”。

图 11 器件选择

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

图 12 配置功能区域划分

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

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

图 13 软件模型下载

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

图 14 工程配置

(7)工程配置完成之后,再点击一下右上方的“GENERATE CODE”,即可产生最终的代码,我们代开代码文件夹就可以看到 Keil 的工程文件了,如图 15 所示。

图 15 最终生成的 Keil 代码

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

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
LTC6993CS6-2#TRMPBF 1 Analog Devices Inc LTC6993CS6-2#TRMPBF

ECAD模型

下载ECAD模型
$3.63 查看
AT17F16-30CU 1 Microchip Technology Inc IC FLASH CONFIG 16M 8LAP
$22.5 查看
AD73311ARSZ-REEL 1 Rochester Electronics LLC SPECIALTY TELECOM CIRCUIT, PDSO20, SSOP-20
$9.29 查看

相关推荐

电子产业图谱