STM32開發-LL庫與HAL庫對比
在使用STM32CubeMX或者STM32CubeIDE開發應用程序時,用戶可以根據自己的喜好選擇使用HAL高級庫或者LL底層庫驅動,但是在用法上,兩者有很大的不同。
LL底層庫
LL驅動函數,實際上就是以內聯函數的方式訪問寄存器,在優化等級高的時候,編譯器會直接嵌入宏代碼,因此與我們自己直接對寄存器讀寫的效率是一樣的。
也正因為如此,LL庫只給我們實現了功能非常簡單功能,基本上只有一些初始化的代碼,其它的功能需要用戶自己去實現,這一方面增加了開發難度,但是,給我們開發程序增加了靈活性,我在專欄《STM32精講》中,就是以LL庫為基礎,給大家介紹單片機的驅動及應用開發,目前已經完成了通用串口驅動及協議的課程(包括工程源代碼)。
其特點就是高效,與自己直接寫代碼訪問寄存器相比,在不降低效率的情況下,其代碼更加統一規范,具有可移植性,而且更加節省內存空間。
HAL高級庫
相比LL庫,HAL庫就為用戶實現了非常完善的功能,從初始化到具體的收、發和讀、寫等功能都全部提供了。所以從使用上看是更簡單了,但是效率降低了,代碼空間也大了很多。當然,這對一般的使用而言,影響不是太大,如果有微秒級別的控制需求的話,建議還是用LL庫比較好。在《STM32 HAL庫使用》中,對HAL庫函數的使用作了詳細的說明,從工作原理到參數配置,有一定基本的朋友可以參考。
HAL初始化結構比較大,而且初始化完成之后還不釋放,有點浪費內存。
總結
建議大家一定要采用庫函數開發自己的程序,不要再采用直接對寄存器賦值一個數字的方式來實現對寄存器的訪問了,時間一長,自己都忘了,很難維護,更難移植。












評論