自STM32標(biāo)準(zhǔn)庫(kù)出道以來(lái),備受廣大工程師和公司的喜愛,但是,從2013年開始,ST逐漸停止了對(duì)標(biāo)準(zhǔn)外設(shè)庫(kù)的更新和維護(hù)。目前,ST全力推崇HAL庫(kù),STM32Cube就是與HAL庫(kù)配合使用圖形化編程官方IDE。
7.1 STM32庫(kù)簡(jiǎn)介
到目前為止,ST有標(biāo)準(zhǔn)外設(shè)庫(kù)(SPL 庫(kù))、HAL 庫(kù)、LL 庫(kù) 三種。前兩者都是常用的庫(kù),后面的 LL 庫(kù)是 ST 最近才添加,隨 HAL 源碼包一起提供,目前支持的芯片也偏少。各庫(kù)如下所示:
圖1 標(biāo)準(zhǔn)庫(kù)、HAL 庫(kù)、LL 庫(kù)對(duì)比.png
其中,SPL 庫(kù) 和 HAL 庫(kù)兩者相互獨(dú)立,互不兼容。幾種庫(kù)的比較如下:
圖2各個(gè)庫(kù)對(duì)比.png
目前幾種庫(kù)對(duì)不同芯片的支持情況如下:
圖3.png
ST 中文官網(wǎng)上有一篇《STM32庫(kù)函數(shù)性能對(duì)比》的文章,其中對(duì)比了各種庫(kù)的性能如下:
圖4 ST各庫(kù)性能對(duì)比.png
7.1.1標(biāo)準(zhǔn)外設(shè)庫(kù)簡(jiǎn)介
標(biāo)準(zhǔn)外設(shè)庫(kù)(Standard Peripherals Library)是對(duì) STM32 芯片的一個(gè)完整的封裝,包括所有標(biāo)準(zhǔn)器件外設(shè)的器件驅(qū)動(dòng)器。這應(yīng)該是目前使用最多的 ST 庫(kù)。幾乎全部使用 C 語(yǔ)言實(shí)現(xiàn)。但是,標(biāo)準(zhǔn)外設(shè)庫(kù)也是針對(duì)某一系列芯片而言的,沒有可移植性。STM32F1系列的版本停留在3.5.0,這個(gè)版本也許是大家最熟悉的版本。
圖5標(biāo)準(zhǔn)外設(shè)庫(kù)支持程度.png
標(biāo)準(zhǔn)外設(shè)庫(kù)仍然接近于寄存器操作,主要就是將一些基本的寄存器操作封裝成了 C 函數(shù)。開發(fā)者需要關(guān)注所使用的外設(shè)是在哪個(gè)總線之上,具體寄存器的配置等底層信息。雖然標(biāo)準(zhǔn)外設(shè)庫(kù)對(duì)各外設(shè)的進(jìn)行了一次封裝,而不是僅僅局限在對(duì)寄存器的封裝。實(shí)現(xiàn)了各外設(shè)的基本操作接口。
標(biāo)準(zhǔn)外設(shè)庫(kù)的文件基本架構(gòu)并不復(fù)雜。下圖顯示了 STM32F10xx 標(biāo)準(zhǔn)外設(shè)庫(kù)文件的基本架構(gòu)
圖6.png
ST 為各系列提供的標(biāo)準(zhǔn)外設(shè)庫(kù)稍微有些區(qū)別。例如,STM32F1x 的庫(kù)和 STM32F3x 的庫(kù)在文件結(jié)構(gòu)上就有些不同,此外,在內(nèi)部的實(shí)現(xiàn)上也稍微有些區(qū)別,這個(gè)在具體使用(移植)時(shí),需要注意一下!但是,不同系列之間的差別并不是很大,而且在設(shè)計(jì)上是相同的。STM32 的標(biāo)準(zhǔn)外設(shè)庫(kù)涵蓋以下 3 個(gè)抽象級(jí)別:
? 包含位,位域和寄存器在內(nèi)的完整的寄存器地址映射
? 涵蓋所有外圍功能(具有公共API的驅(qū)動(dòng)器)的例程和數(shù)據(jù)結(jié)構(gòu)的集合。
? 一組包含所有可用外設(shè)的示例,其中包含最常用的開發(fā)工具的模板項(xiàng)目。
7.1.2 HAL庫(kù)簡(jiǎn)介
HAL是Hardware Abstraction Layer的縮寫,中文名:硬件抽象層。HAL庫(kù)是ST為STM32最新推出的抽象層嵌入式軟件。可以說(shuō)HAL庫(kù)就是用來(lái)取代之前的標(biāo)準(zhǔn)外設(shè)庫(kù)的。相比標(biāo)準(zhǔn)外設(shè)庫(kù),STM32Cube HAL庫(kù)表現(xiàn)出更高的抽象整合水平,HAL API集中關(guān)注各外設(shè)的公共函數(shù)功能,這樣便于定義一套通用的用戶友好的API函數(shù)接口,從而可以輕松實(shí)現(xiàn)從一個(gè)STM32產(chǎn)品移植到另一個(gè)不同的STM32系列產(chǎn)品。HAL庫(kù)是ST未來(lái)主推的庫(kù),從前年開始ST新出的芯片已經(jīng)沒有STD庫(kù)了,比如F7系列。目前,HAL庫(kù)已經(jīng)支持STM32全線產(chǎn)品。
HAL 庫(kù)是基于一個(gè)非限制性的 BSD 許可協(xié)議(Berkeley Software Distribution)而發(fā)布的開源代碼。 ST 制作的中間件堆棧(USB 主機(jī)和設(shè)備庫(kù),STemWin)帶有允許輕松重用的許可模式, 只要是在 ST 公司的 MCU 芯片上使用,庫(kù)中的中間件(USB 主機(jī)/設(shè)備庫(kù),STemWin)協(xié)議棧即被允許隨便修改,并可以反復(fù)使用。至于基于其它著名的開源解決方案商的中間件(FreeRTOS,F(xiàn)atFs,LwIP和PolarSSL)也都具有友好的用戶許可條款。
圖7 HAL庫(kù)支持的中間件.png
目前,結(jié)合HAL庫(kù),ST對(duì)其產(chǎn)品線構(gòu)建的軟件架構(gòu)如下圖所示。
圖8 HAL庫(kù)軟件架構(gòu).png
7.1.3 LL庫(kù)簡(jiǎn)介
LL庫(kù)(Low Layer)是 ST 最近新增的庫(kù),與 HAL 庫(kù)捆綁發(fā)布,文檔也是和 HAL 庫(kù)文檔在一起的,比如:在STM32F3x 的 HAL 庫(kù)說(shuō)明文檔中,ST 新增了LL庫(kù)這一章節(jié),但是在 F2x 的HAL文檔中就沒有。
LL 庫(kù)更接近硬件層,對(duì)需要復(fù)雜上層協(xié)議棧的外設(shè)不適用,直接操作寄存器。其支持所有外設(shè)。使用方法:
? 獨(dú)立使用,該庫(kù)完全獨(dú)立實(shí)現(xiàn),可以完全拋開 HAL 庫(kù),只用LL庫(kù)編程完成。在使用STM32CubeMX生成項(xiàng)目時(shí),直接選LL庫(kù)即可。如果使用了復(fù)雜的外設(shè),例如 USB,則會(huì)調(diào)用 HAL 庫(kù)
? 混合使用,和 HAL 庫(kù)結(jié)合使用。
目前,CubeMX 在生成項(xiàng)目時(shí),可以選擇采用 LL 庫(kù)。
LL 庫(kù)文件的命名方式和 HAL 庫(kù)基本相同。個(gè)人感覺,LL 庫(kù)就是原來(lái)的標(biāo)準(zhǔn)外設(shè)庫(kù)移植到 Cube下的新的實(shí)現(xiàn),但是其實(shí)現(xiàn)方法更加高效、簡(jiǎn)潔。使用 LL 庫(kù)編程和使用標(biāo)準(zhǔn)外設(shè)庫(kù)的方式基本一樣,但是確會(huì)得到比標(biāo)準(zhǔn)外設(shè)庫(kù)更高的效率。
7.2 STM32Cube簡(jiǎn)介
ST 為新的標(biāo)準(zhǔn)庫(kù)注冊(cè)了一個(gè)新商標(biāo):STMCube?。并且,ST專門為其開發(fā)了配套的桌面軟件 STMCubeMX,開發(fā)者可以直接使用該軟件進(jìn)行可視化配置,大大節(jié)省開發(fā)時(shí)間。
圖9.jpg
這其中就包含了 HAL 庫(kù)和最近新增的 LL 庫(kù)。如下圖:
圖10.png
從上圖不難看出,LL 庫(kù)和 HAL 庫(kù)兩者相互獨(dú)立,只不過(guò) LL 庫(kù)更底層。而且,部分 HAL 庫(kù)會(huì)調(diào)用LL庫(kù)(例如:USB驅(qū)動(dòng))。同樣,LL 庫(kù)也會(huì)調(diào)用 HAL 庫(kù)。
用戶可以使用 STMCubeMX 直接生成對(duì)應(yīng)芯片的整個(gè)項(xiàng)目(目前主流開發(fā)工具的項(xiàng)目基本全支持),STMCubeMX 負(fù)責(zé)給整理各種需要的源碼文件。如下所所示。
圖11 STM32Cube生成代碼過(guò)程.png
好了,關(guān)于STM32固件庫(kù)與STM32Cube產(chǎn)品介紹就到這里吧,在虎紋,筆者將帶領(lǐng)大家學(xué)習(xí)如何安裝與使用STM32Cube。
上一篇:STM32CUBEMX F103 HAL庫(kù)開發(fā)之 USB虛擬串口
下一篇:《嵌入式-STM32開發(fā)指南》第一部分 入門篇 - 第5章 STM32新建工程及配置
推薦閱讀最新更新時(shí)間:2025-06-23 09:00

- 熱門資源推薦
- 熱門放大器推薦
-
【Follow me第三季第1期】任務(wù)三:Arduino環(huán)境運(yùn)動(dòng)傳感器數(shù)據(jù)讀取
-
【Follow me 第三季第1期】任務(wù)二——Arduino控制板載LED燈,并實(shí)現(xiàn)呼吸燈效果
-
【Follow me 第三季第1期】任務(wù)一 源碼-——Arduino環(huán)境Hello EEWorld
-
Follow me第三季第1期STM32F429作品代碼
-
射頻電路設(shè)計(jì)
-
器件應(yīng)力降額總規(guī)范(艾默生)
-
5G通信系統(tǒng)定位技術(shù)原理與方法
-
笨辦法學(xué)C語(yǔ)言
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- Microchip 升級(jí)數(shù)字信號(hào)控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領(lǐng)先的新器件
- 意法半導(dǎo)體STM32MP23x:突破成本限制的工業(yè)AI應(yīng)用核心
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無(wú)線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進(jìn)行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲(chǔ)html,css,js文件,以及網(wǎng)頁(yè)和arduino的通訊
- ESP32 freeRTOS使用測(cè)試
- STM32RCT6
- 使用 Seeed Technology Co.,Ltd 的 XVF3000-TQ128-C 的參考設(shè)計(jì)
- SP691A,用于便攜式 SP691A/693A 微處理器電源監(jiān)控的評(píng)估套件
- IS31AP4991 1.2W AB類音頻功率放大器的典型應(yīng)用(單端輸入)
- 485toCAN_motor_controller
- LT1308ACS8 SEPIC(單端初級(jí)電感轉(zhuǎn)換器)的典型應(yīng)用電路將 3V 至 10V 輸入轉(zhuǎn)換為 5V/500mA 穩(wěn)壓輸出
- 溫控器
- 帶有四路降壓穩(wěn)壓器、監(jiān)控電路和 I2C 接口的 ADP5051 集成電源解決方案的典型應(yīng)用電路
- air_inspector
- EVAL-ADCMP551BRQ,具有 ADCMP551、雙高速 PECL 比較器的評(píng)估板,采用 16 引腳 QSOP
- 飛思卡爾單片機(jī) 時(shí)鐘初始化及配置
- GIS局放檢測(cè)過(guò)程抗干擾措施分享
- 基于STM32F0xx單片機(jī)的74HC595驅(qū)動(dòng)程序
- 羅德與施瓦茨推出結(jié)合EDA 仿真與硬件測(cè)試的R&S VSESIM-VSS
- 基于51單片機(jī)的串口通信(PC發(fā)字符)
- 索尼展示了下一代VR頭顯原型設(shè)備:支持8K分辨率、低延遲
- 數(shù)字萬(wàn)用表測(cè)量電容的四個(gè)小方法
- 半導(dǎo)體特性分析儀_4200-SCS型半導(dǎo)體特性分析系統(tǒng)
- 意法半導(dǎo)體ST-KNX家庭樓宇自動(dòng)化芯片組
- 潤(rùn)石科技推出RS3215-Q1系列低壓差線性穩(wěn)壓器
- CANape 23開啟智能測(cè)試新時(shí)代(下)
- 軟件定義汽車電源管理設(shè)計(jì):NXP的PMIC選型攻略解析
- 深度測(cè)評(píng)時(shí)空壺X1同聲傳譯器:全球最先進(jìn)AI同傳設(shè)備的非凡實(shí)力
- 作為領(lǐng)先的垂直整合制造商(IDM),英飛凌在 300mm氮化鎵生產(chǎn)路線圖方面取得突破
- 鐵威馬F6-424 Max:六盤位擴(kuò)容+國(guó)產(chǎn)系統(tǒng)兼容,小白也能玩轉(zhuǎn)NAS
- 開關(guān)電源給鉛酸電池恒流恒壓充電的電流跳動(dòng)問題解析
- 自動(dòng)駕駛中的激光雷達(dá)是否會(huì)傷害攝像頭?
- 觸覺技術(shù)助力企業(yè)在激烈的市場(chǎng)競(jìng)爭(zhēng)中脫穎而出
- 芯片中的串?dāng)_噪聲有幾類
- 預(yù)計(jì)第三代功率半導(dǎo)體2021年市場(chǎng)將突破10億美元
- 移動(dòng)機(jī)器人系統(tǒng)遇見仿生軟手BionicSoftHand 2.0
- 5大關(guān)鍵詞,回顧機(jī)器人行業(yè)的2020上半年!
- 2020DMP工博會(huì)將迎“國(guó)際機(jī)器人與自動(dòng)化展覽暨會(huì)議”
- Soitec優(yōu)化襯底如何助力汽車電子化發(fā)展
- STM32F1_片內(nèi)FLASH編程
- STM32F10x_ADC三通道逐次轉(zhuǎn)換(單次、單通道軟件觸發(fā))
- MORAI推出全新自動(dòng)駕駛汽車模擬解決方案
- STM32_SPI主從通信
- 先鋒公司推出新型NEX汽車音頻接收器