《嵌入式-STM32開發(fā)指南》第一部分 入門篇 - 第7章 STM32固件庫與STM32Cube產(chǎn)品介紹

自STM32標(biāo)準(zhǔn)庫出道以來,備受廣大工程師和公司的喜愛叁巨,但是斑匪,從2013年開始,ST逐漸停止了對標(biāo)準(zhǔn)外設(shè)庫的更新和維護(hù)锋勺。目前蚀瘸,ST全力推崇HAL庫,STM32Cube就是與HAL庫配合使用圖形化編程官方IDE庶橱。

7.1 STM32庫簡介

到目前為止贮勃,ST有標(biāo)準(zhǔn)外設(shè)庫(SPL 庫)、HAL 庫苏章、LL 庫 三種寂嘉。前兩者都是常用的庫,后面的 LL 庫是 ST 最近才添加枫绅,隨 HAL 源碼包一起提供泉孩,目前支持的芯片也偏少。各庫如下所示:

圖1 標(biāo)準(zhǔn)庫并淋、HAL 庫棵譬、LL 庫對比.png

其中,SPL 庫 和 HAL 庫兩者相互獨(dú)立预伺,互不兼容订咸。幾種庫的比較如下:

圖2各個庫對比.png

目前幾種庫對不同芯片的支持情況如下:

圖3.png

ST 中文官網(wǎng)上有一篇《STM32庫函數(shù)性能對比》的文章曼尊,其中對比了各種庫的性能如下:

圖4 ST各庫性能對比.png

7.1.1標(biāo)準(zhǔn)外設(shè)庫簡介

標(biāo)準(zhǔn)外設(shè)庫(Standard Peripherals Library)是對 STM32 芯片的一個完整的封裝,包括所有標(biāo)準(zhǔn)器件外設(shè)的器件驅(qū)動器脏嚷。這應(yīng)該是目前使用最多的 ST 庫骆撇。幾乎全部使用 C 語言實(shí)現(xiàn)。但是父叙,標(biāo)準(zhǔn)外設(shè)庫也是針對某一系列芯片而言的神郊,沒有可移植性。STM32F1系列的版本停留在3.5.0趾唱,這個版本也許是大家最熟悉的版本涌乳。

圖5標(biāo)準(zhǔn)外設(shè)庫支持程度.png

標(biāo)準(zhǔn)外設(shè)庫仍然接近于寄存器操作,主要就是將一些基本的寄存器操作封裝成了 C 函數(shù)甜癞。開發(fā)者需要關(guān)注所使用的外設(shè)是在哪個總線之上夕晓,具體寄存器的配置等底層信息。雖然標(biāo)準(zhǔn)外設(shè)庫對各外設(shè)的進(jìn)行了一次封裝悠咱,而不是僅僅局限在對寄存器的封裝蒸辆。實(shí)現(xiàn)了各外設(shè)的基本操作接口。

標(biāo)準(zhǔn)外設(shè)庫的文件基本架構(gòu)并不復(fù)雜析既。下圖顯示了 STM32F10xx 標(biāo)準(zhǔn)外設(shè)庫文件的基本架構(gòu)

圖6.png

ST 為各系列提供的標(biāo)準(zhǔn)外設(shè)庫稍微有些區(qū)別躬贡。例如,STM32F1x 的庫和 STM32F3x 的庫在文件結(jié)構(gòu)上就有些不同眼坏,此外拂玻,在內(nèi)部的實(shí)現(xiàn)上也稍微有些區(qū)別,這個在具體使用(移植)時宰译,需要注意一下纺讲!但是,不同系列之間的差別并不是很大囤屹,而且在設(shè)計(jì)上是相同的。STM32 的標(biāo)準(zhǔn)外設(shè)庫涵蓋以下 3 個抽象級別:

? 包含位逢渔,位域和寄存器在內(nèi)的完整的寄存器地址映射
? 涵蓋所有外圍功能(具有公共API的驅(qū)動器)的例程和數(shù)據(jù)結(jié)構(gòu)的集合肋坚。
? 一組包含所有可用外設(shè)的示例,其中包含最常用的開發(fā)工具的模板項(xiàng)目肃廓。

7.1.2 HAL庫簡介

HAL是Hardware Abstraction Layer的縮寫智厌,中文名:硬件抽象層。HAL庫是ST為STM32最新推出的抽象層嵌入式軟件盲赊∠撑簦可以說HAL庫就是用來取代之前的標(biāo)準(zhǔn)外設(shè)庫的。相比標(biāo)準(zhǔn)外設(shè)庫哀蘑,STM32Cube HAL庫表現(xiàn)出更高的抽象整合水平诚卸,HAL API集中關(guān)注各外設(shè)的公共函數(shù)功能葵第,這樣便于定義一套通用的用戶友好的API函數(shù)接口,從而可以輕松實(shí)現(xiàn)從一個STM32產(chǎn)品移植到另一個不同的STM32系列產(chǎn)品合溺。HAL庫是ST未來主推的庫卒密,從前年開始ST新出的芯片已經(jīng)沒有STD庫了,比如F7系列棠赛。目前哮奇,HAL庫已經(jīng)支持STM32全線產(chǎn)品。

HAL 庫是基于一個非限制性的 BSD 許可協(xié)議(Berkeley Software Distribution)而發(fā)布的開源代碼睛约。 ST 制作的中間件堆棧(USB 主機(jī)和設(shè)備庫鼎俘,STemWin)帶有允許輕松重用的許可模式, 只要是在 ST 公司的 MCU 芯片上使用辩涝,庫中的中間件(USB 主機(jī)/設(shè)備庫,STemWin)協(xié)議棧即被允許隨便修改贸伐,并可以反復(fù)使用。至于基于其它著名的開源解決方案商的中間件(FreeRTOS膀值,F(xiàn)atFs棍丐,LwIP和PolarSSL)也都具有友好的用戶許可條款。

圖7 HAL庫支持的中間件.png

目前沧踏,結(jié)合HAL庫歌逢,ST對其產(chǎn)品線構(gòu)建的軟件架構(gòu)如下圖所示。

圖8 HAL庫軟件架構(gòu).png

7.1.3 LL庫簡介

LL庫(Low Layer)是 ST 最近新增的庫翘狱,與 HAL 庫捆綁發(fā)布秘案,文檔也是和 HAL 庫文檔在一起的,比如:在STM32F3x 的 HAL 庫說明文檔中潦匈,ST 新增了LL庫這一章節(jié)阱高,但是在 F2x 的HAL文檔中就沒有。

LL 庫更接近硬件層茬缩,對需要復(fù)雜上層協(xié)議棧的外設(shè)不適用赤惊,直接操作寄存器。其支持所有外設(shè)凰锡。使用方法:

? 獨(dú)立使用未舟,該庫完全獨(dú)立實(shí)現(xiàn),可以完全拋開 HAL 庫掂为,只用LL庫編程完成裕膀。在使用STM32CubeMX生成項(xiàng)目時,直接選LL庫即可勇哗。如果使用了復(fù)雜的外設(shè)昼扛,例如 USB,則會調(diào)用 HAL 庫
? 混合使用欲诺,和 HAL 庫結(jié)合使用抄谐。

目前渺鹦,CubeMX 在生成項(xiàng)目時,可以選擇采用 LL 庫斯稳。
LL 庫文件的命名方式和 HAL 庫基本相同海铆。個人感覺,LL 庫就是原來的標(biāo)準(zhǔn)外設(shè)庫移植到 Cube下的新的實(shí)現(xiàn)挣惰,但是其實(shí)現(xiàn)方法更加高效卧斟、簡潔。使用 LL 庫編程和使用標(biāo)準(zhǔn)外設(shè)庫的方式基本一樣憎茂,但是確會得到比標(biāo)準(zhǔn)外設(shè)庫更高的效率珍语。

7.2 STM32Cube簡介

ST 為新的標(biāo)準(zhǔn)庫注冊了一個新商標(biāo):STMCube?。并且竖幔,ST專門為其開發(fā)了配套的桌面軟件 STMCubeMX板乙,開發(fā)者可以直接使用該軟件進(jìn)行可視化配置,大大節(jié)省開發(fā)時間拳氢。

圖9.jpg

這其中就包含了 HAL 庫和最近新增的 LL 庫募逞。如下圖:

圖10.png

從上圖不難看出,LL 庫和 HAL 庫兩者相互獨(dú)立馋评,只不過 LL 庫更底層放接。而且,部分 HAL 庫會調(diào)用LL庫(例如:USB驅(qū)動)留特。同樣纠脾,LL 庫也會調(diào)用 HAL 庫。

用戶可以使用 STMCubeMX 直接生成對應(yīng)芯片的整個項(xiàng)目(目前主流開發(fā)工具的項(xiàng)目基本全支持)蜕青,STMCubeMX 負(fù)責(zé)給整理各種需要的源碼文件苟蹈。如下所所示。

圖11 STM32Cube生成代碼過程.png

STM32Cube下載地址

好了右核,關(guān)于STM32固件庫與STM32Cube產(chǎn)品介紹就到這里吧慧脱,在虎紋,筆者將帶領(lǐng)大家學(xué)習(xí)如何安裝與使用STM32Cube贺喝。

[ps]以上圖片均來自ST官方資料菱鸥。

歡迎訪問我的網(wǎng)站:
BruceOu的嗶哩嗶哩
BruceOu的主頁
BruceOu的博客
CSDN博客
簡書

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市搜变,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌针炉,老刑警劉巖挠他,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異篡帕,居然都是意外死亡殖侵,警方通過查閱死者的電腦和手機(jī)贸呢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拢军,“玉大人楞陷,你說我怎么就攤上這事≤园Γ” “怎么了固蛾?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長度陆。 經(jīng)常有香客問我艾凯,道長,這世上最難降的妖魔是什么懂傀? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任趾诗,我火速辦了婚禮,結(jié)果婚禮上蹬蚁,老公的妹妹穿的比我還像新娘恃泪。我一直安慰自己,他們只是感情好犀斋,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布贝乎。 她就那樣靜靜地躺著,像睡著了一般闪水。 火紅的嫁衣襯著肌膚如雪糕非。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天球榆,我揣著相機(jī)與錄音朽肥,去河邊找鬼。 笑死持钉,一個胖子當(dāng)著我的面吹牛衡招,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播每强,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼始腾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了空执?” 一聲冷哼從身側(cè)響起浪箭,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎辨绊,沒想到半個月后奶栖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年宣鄙,在試婚紗的時候發(fā)現(xiàn)自己被綠了袍镀。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡冻晤,死狀恐怖苇羡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鼻弧,我是刑警寧澤设江,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站温数,受9級特大地震影響绣硝,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜撑刺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一鹉胖、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧够傍,春花似錦甫菠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至安聘,卻和暖如春痰洒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背浴韭。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工丘喻, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人念颈。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓泉粉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親榴芳。 傳聞我的和親對象是個殘疾皇子嗡靡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評論 2 355