
文/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下載網盤二維碼
安裝步驟為: