STM32標準外設庫、 HAL庫、LL庫

  工做以來一直使用ST的STM32系列芯片,ST爲開發者提供了很是方便的開發庫。到目前爲止,有標準外設庫(STD庫)、HAL庫、LL庫 三種。前二者都是經常使用的庫,後面的LL庫是ST最近才添加,目前支持的芯片也偏少。各庫以下所示:編程

其中STD庫和HAL庫二者相互獨立,互不兼容。幾種庫的比較以下: 數據結構

目前幾種庫對不一樣芯片的支持狀況以下: 函數

上圖中,LL庫目前有部分芯片不支持,官方計劃2017年逐步完善。工具

STM32Snippets

它是代碼示例的集合,直接基於STM32外設寄存器,可在文檔和軟件包中使用。因爲處在最底層,所以須要開發者直接操做外設寄存器,對開發者要求比較高,一般針對於對彙編程序比較瞭解的資深嵌入式工程師!開發工具

注意: 
1. 目前只在STM32F0和L0系列中有提供 
2. 代碼在不一樣ST芯片間沒有可移植性spa

標準外設庫(Standard Peripheral Libraries)

標準外設庫(Standard Peripherals Library)是對STM32芯片的一個完整的封裝,包括全部標準器件外設的器件驅動器。這應該是目前使用最多的ST庫。幾乎所有使用C語言實現。可是,標準外設庫也是針對某一系列芯片而言的,沒有可移植性。相對於HAL庫,標準外設庫仍然接近於寄存器操做,主要就是將一些基本的寄存器操做封裝成了C函數。開發者須要關注所使用的外設是在哪一個總線之上,具體寄存器的配置等底層信息。設計

注意:標準外設庫不支持從STM32 L0,L4和F7開始的以後的STM32系列芯片中間件

ST爲各系列提供的標準外設庫稍微有些區別。例如,STM32F1x的庫和STM32F3x的庫在文件結構上就有些不一樣,此外,在內部的實現上也稍微有些區別,這個在具體使用(移植)時,須要注意一下!可是,不一樣系列之間的差異並非很大,並且在設計上是相同的。STM32的標準外設庫涵蓋如下3個抽象級別:blog

  • 包含位,位域和寄存器在內的完整的寄存器地址映射
  • 涵蓋全部外圍功能(具備公共API的驅動器)的例程和數據結構的集合。
  • 一組包含全部可用外設的示例,其中包含最經常使用的開發工具的模板項目。

  關於更詳細的信息,能夠參考ST的官方文檔,文檔中對於標準外設庫函數命名、文件結構等都有詳細的說明。接口

STM32Cube(HAL庫、LL庫)

ST爲新的標準庫註冊了一個新商標:STMCube™。而且,ST專門爲其開發了配套的桌面軟件STMCubeMX,開發者能夠直接使用該軟件進行可視化配置,大大節省開發時間。這其中就包含了HAL庫和最近新增的LL庫。以下圖: 

從上圖不難看出,LL庫和HAL庫二者相互獨立,只不過LL庫更底層。

一、HAL庫

HAL是Hardware Abstraction Layer的縮寫,中文名:硬件抽象層。HAL庫是ST爲STM32最新推出的抽象層嵌入式軟件,能夠更好的確保跨STM32產品的最大可移植性。該庫提供了一整套一致的中間件組件,如RTOS,USB,TCP / IP和圖形等。

HAL庫是基於一個非限制性的BSD許可協議(Berkeley Software Distribution)而發佈的開源代碼。 ST製做的中間件堆棧(USB主機和設備庫,STemWin)帶有容許輕鬆重用的許可模式, 只要是在ST公司的MCU 芯片上使用,庫中的中間件(USB 主機/設備庫,STemWin)協議棧即被容許隨便修改,並能夠反覆使用。至於基於其它著名的開源解決方案商的中間件(FreeRTOS,FatFs,LwIP和PolarSSL)也都具備友好的用戶許可條款。

能夠說HAL庫就是用來取代以前的標準外設庫的。相比標準外設庫,STM32Cube HAL庫表現出更高的抽象整合水平,HAL API集中關注各外設的公共函數功能,這樣便於定義一套通用的用戶友好的API函數接口,從而能夠輕鬆實現從一個STM32產品移植到另外一個不一樣的STM32系列產品。HAL庫是ST將來主推的庫,從前年開始ST新出的芯片已經沒有STD庫了,好比F7系列。目前,HAL庫已經支持STM32全線產品。

二、LL庫

LL庫(Low Layer)是ST最近新增的庫,與HAL捆綁發佈,文檔也是和HAL文檔在一塊兒的,好比:在STM32F3x的HAL庫說明文檔中,ST新增了LL庫這一章節,可是在F2x的HAL文檔中就沒有。

LL庫更接近硬件層,對須要複雜上層協議棧的外設不適用,直接操做寄存器。其支持全部外設。使用方法:

  • 獨立使用,該庫徹底獨立實現,能夠徹底拋開HAL庫,只用LL庫編程完成。
  • 混合使用,和HAL庫結合使用。

LL庫文件的命名方式和HAL庫基本相同。LL庫也是偶然間發現的,尚未使用過,後面先試試在完善!

相關文章
相關標籤/搜索