文/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下载网盘二维码
安装步骤为: