新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > STM32開發(fā)-LL庫與HAL庫對比

STM32開發(fā)-LL庫與HAL庫對比

作者:嵌入式經(jīng)驗分享 時間:2025-08-01 來源:今日頭條 收藏

在使用CubeMX或者CubeIDE開發(fā)應用程序時,用戶可以根據(jù)自己的喜好選擇使用HAL高級庫或者LL底層庫驅動,但是在用法上,兩者有很大的不同。

LL底層庫

LL驅動函數(shù),實際上就是以內聯(lián)函數(shù)的方式訪問寄存器,在優(yōu)化等級高的時候,編譯器會直接嵌入宏代碼,因此與我們自己直接對寄存器讀寫的效率是一樣的。

也正因為如此,LL庫只給我們實現(xiàn)了功能非常簡單功能,基本上只有一些初始化的代碼,其它的功能需要用戶自己去實現(xiàn),這一方面增加了開發(fā)難度,但是,給我們開發(fā)程序增加了靈活性,我在專欄《精講》中,就是以LL庫為基礎,給大家介紹單片機的驅動及應用開發(fā),目前已經(jīng)完成了通用串口驅動及協(xié)議的課程(包括工程源代碼)。

其特點就是高效,與自己直接寫代碼訪問寄存器相比,在不降低效率的情況下,其代碼更加統(tǒng)一規(guī)范,具有可移植性,而且更加節(jié)省內存空間。

HAL高級庫

相比LL庫,HAL庫就為用戶實現(xiàn)了非常完善的功能,從初始化到具體的收、發(fā)和讀、寫等功能都全部提供了。所以從使用上看是更簡單了,但是效率降低了,代碼空間也大了很多。當然,這對一般的使用而言,影響不是太大,如果有微秒級別的控制需求的話,建議還是用LL庫比較好。在《STM32 HAL庫使用》中,對HAL庫函數(shù)的使用作了詳細的說明,從工作原理到參數(shù)配置,有一定基本的朋友可以參考。

HAL初始化結構比較大,而且初始化完成之后還不釋放,有點浪費內存。

總結

建議大家一定要采用庫函數(shù)開發(fā)自己的程序,不要再采用直接對寄存器賦值一個數(shù)字的方式來實現(xiàn)對寄存器的訪問了,時間一長,自己都忘了,很難維護,更難移植。


關鍵詞: STM32

評論


相關推薦

技術專區(qū)

關閉