STM32標準庫、HAL庫和LL庫介紹

2023-06-21 15:03:46 來源:物聯網知識


(資料圖)

引言

我們在進行STM32開發的時候,使用寄存器進行開發的終究是少數,大多數人還是習慣用庫函數進行開發。到目前為止,有標準外設庫、HAL庫、LL庫 三種。本文將分別介紹以下三種庫,便于大家區分。

介紹

標準庫

標準庫(Standard Peripheral Library)是STMicroelectronics提供的最基本的庫。它提供了對STM32微控制器的底層寄存器和外設的直接訪問。標準庫的設計目標是提供高度靈活性和低層次的硬件控制,以滿足對性能和資源的嚴格要求。使用標準庫,開發人員可以直接操作寄存器來配置和控制微控制器的功能,但需要手動編寫大量的底層代碼。標準庫適用于對性能要求較高的應用和對代碼大小和效率有嚴格要求的項目。

HAL庫

HAL庫(Hardware Abstraction Layer)是STMicroelectronics為了提供更高級別的抽象和簡化開發而引入的庫。HAL庫基于標準庫,并提供了一組API函數,將底層硬件操作抽象為高級函數調用。這樣,開發人員可以使用更高級別的API函數來進行配置和控制微控制器的功能,而不需要直接操作底層寄存器。HAL庫提供了一種更易用和可移植的編程模型,并減少了編寫底層代碼的工作量。它還支持多種開發板和外設,提供了一致的接口,簡化了代碼移植和復用。HAL庫適用于大多數應用程序,尤其是中等復雜性的項目。

LL庫

LL庫(Low-Level Library)是STMicroelectronics在HAL庫的基礎上提供的更低級別的庫。LL庫提供了對底層寄存器和外設的更直接的訪問,并提供了一組低級別的API函數。LL庫保留了更多的硬件細節,為開發人員提供了更高級別的靈活性和控制。使用LL庫,開發人員可以直接編寫更底層的代碼,實現對微控制器和外設的精細控制。LL庫適用于對性能和資源要求極高,以及對底層硬件控制有特殊需求的應用。

三者的關系

在這三種庫中,出現的先后順序是標準庫—HAL庫—LL庫,所以大家如果在網上 看到LL庫編寫的程序,大概是不久完成的,看到標準庫,可能就是稍早一些時候的了。

這幾種庫的比較官方介紹如下圖:

HAL庫雖然移植性最好,但問題也最多。比如在串口收發的時候,由于HAL庫中的中斷接收和串口發送使用的互斥鎖是一個,所以會造成好好的全雙工變成了半雙工。而標準庫和LL庫都沒有這個問題。諸如此類的問題還有很多,但HAL庫確實開發效率最高。具體使用效果因人而異吧。

總結

ST提供的標準庫、HAL庫和LL庫各有其優勢和特點,如果是移植很久前的項目,大概率要使用標準庫。如果新開發項目,使用STM32CubeMX就必須使用HAL庫和LL庫了。個人建議,現在最好是使用HAL庫+LL庫進行開發,因為這是官方主推的庫,并且CubeMX確實是個很好用的工具,而里面只有HAL庫和LL庫。HAL庫開發迅速,LL庫開發穩定,大家可以結合著用。

標簽:

上一篇:開集、開漏與推挽輸出原理詳解
下一篇:最后一頁