STM32四種庫對比:寄存器、標準外設庫、HAL、LL

2020-11-22 電子工程專輯

關注+星標公眾,不錯過精彩內容

作者 | strongerHuang

微信公眾號 | strongerHuang


1.我是選擇寄存器開發STM32,還是標準外設庫呢?
  • Standard Peripheral Library

什麼是STM32Snippets?


STM32Snippets可翻譯為「代碼片段」、「裁剪」,其實他就是我們常說的「寄存器」開發STM32的底層驅動代碼。

__INLINE void ConfigureGPIOforADC(void){ RCC->AHBENR |= RCC_AHBENR_GPIOAEN | RCC_AHBENR_GPIOBEN | RCC_AHBENR_GPIOCEN; GPIOA->MODER |= GPIO_MODER_MODER1; GPIOB->MODER |= GPIO_MODER_MODER1; GPIOC->MODER |= GPIO_MODER_MODER0; }

STM32Snippets是高度優化的示例代碼集合,使用符合CMSIS的直接寄存器訪問來減少代碼開銷,從而在各種應用程式中最大化STM32 MCUs的性能。
STM32Snippets主要針對底層開發人員,或者從51轉過來,直接操作寄存器開發的人員。 是沒有經過封裝,可見底層寄存器的一套示例代碼。
每個STM32系列的100多個片段演示了如何以最小的內存佔用有效地使用STM32外圍設備。
https://www.st.com/en/embedded-software/stm32snippets.html

(公號不支持外連結,請複製連結到瀏覽器打開)

STM32Snippets目前官方只提供:STM32F0和L0的示例代碼包


提供的示例代碼有點類似標準外設庫風格,給大家看下F0的代碼包:

同樣也提供Keil MDK、 IAR EWARM的工程。

2

Standard Peripheral Library

Standard Peripheral Library:簡寫SPL,也叫標準外設庫


相信學習過STM32的朋友,對標準外設庫都不陌生,是一組外圍設備的C語言代碼集合。(因為現在ST官方主推STM32CubeMX,所以停止了對SPL的更新)
標準外設庫是在寄存器的基礎上進行了一次簡單封裝,主要是面向過程的嵌入式系統開發人員。

https://www.st.com/en/embedded-software/stm32-standard-peripheral-libraries.html


目前標準外設庫支持STM32F0、 F1、 F2、 F3、 F4、 L1, 不支持F7、 H7、 MP1、L0、 L4、 L5、 G0、G4等後面推出的系列。


LL:Low-Layer,底層庫

HAL:Hardware Abstraction Layer,硬體抽象層庫


STM32Cube HAL 和 LL配合STM32CubeMX工具對STM32進行開發。也是目前ST官方主推的一套開發STM32的庫。


HAL針對的是具有一定嵌入式基礎的開發人員,HAL具有很好的移植性。


LL庫相對HAL,具有簡單的結構,針對之前從事SPL(標準外設庫),或寄存器開發的人員。


地址:

https://www.st.com/en/development-tools/stm32cubemx.html


STM32Cube HAL 和 LL是目前官方主推,並重點維護和更新的庫,也建議大家都學習一下。而且新出來的型號(如L5、G4等系列)沒有標準外設庫,只有STM32Cube HAL 和 LL庫了。

來自官方的對比信息,包含可移植性、優化、難易程度等。


其中:

Portability:可移植性

Optimization :優化

Easy:難易程度

Hardware coverage:硬體覆蓋


定位:


支持器件:

最近新增了STM32Cube MP1,官方沒有統計上。


庫之間的轉移:


本文就到這裡,希望以上內容對你有所幫助!


------------ END ------------

關注 微信公眾號『嵌入式專欄』,底部菜單查看更多內容,回復「加群」按規則加入技術交流群。


點擊「閱讀原文」查看更多分享,歡迎點分享、收藏、點讚、在看

相關焦點

  • STM32教程(五)HAL庫之GPIO函數及實例詳細介紹!
    今天介紹STM32 HAL庫的GPIO函數庫,首先打開stm32f4xx_hal_gpio.h文件,我們能看到一些結構體定義以及GPIO引腳的地址定義等等,這些都很好理解,我們需要重點看HAL庫中GPIO的函數庫有哪些?以及這些函數庫有什麼作用以及怎麼使用這些函數?
  • GPIO相關寄存器配置詳解
    ,與庫函數版本一樣         各總線、外設基地址可參考STM32F4xx中文參考手冊2.3節的存儲器映射 一、GPIO的綜合描述stm32每一個GPIO埠擁有2個32bits的configuration寄存器(GPIOx_CRL,GPIOx_CRH),2個32bits的數據寄存器(GPIOx_IDR,GPIOx_ODR),1個32bits的set/reset寄存器(GPIOx_BSRR),1個16bits的reset寄存器(GPIOx_BRR)和1個32bits的Lock寄存器(GPIOx_LCKR)
  • 怎麼學習STM32單片機?看老司機是怎麼說的!
    你問,如何系統地入門學習stm32?  本身就是一個錯誤的問題。假如你會使用8051 , 會寫C語言,那麼STM32本身並不需要刻意的學習。  你要考慮的是, 我可以用STM32實現什麼?  為什麼使用STM32而不是8051? 是因為51的頻率太低,無法滿足計算需求?
  • stm32庫函數學習篇通用定時器輸入捕獲功能
    本文引用地址:http://www.eepw.com.cn/article/201611/318488.htm先有必要了解stm32定時器的輸入觸發模塊,如下圖:stm32定時器輸入觸發功能其實挺簡單的,與AVR單片機幾乎一樣。就是單片機引腳上一旦出現一個有效邊沿(可以配置為上升、下降或者上升下降均觸發),那麼定時器計數器CNT裡面的值就會被相應的Capture/Compare X Register保存下來。這裡X可以是1,2,3,4任何一個。並且中斷標誌位被置位。
  • avr單片機和stm32區別與優缺點分析
    最多高達112個的快速I/O埠、最多多達11個定時器、最多多達13個通信接口   使用最多的器件:stm32F103系列、stm32 L1系列、stm32W系列   stm32單片機優點:   除新增的功能強化型外設接口外,STM32互連繫列還提供與其它STM32微控制器相同的標準接口,這種外設共用性提升了整個產品家族的應用靈活性
  • STM32學習筆記——使用函數庫編程控制GPIO口輸出
    看了網上許多人的代碼以及各類開發板所帶的例程,大多數使用的都是官方發布的函數庫來編程,通過查詢後發現,使用函數庫來編程可以簡化開發過程,並不需要追溯到各個寄存器,通過查看庫手冊,新手也可以快速應用STM32,因此
  • STM32單片機GPIO寄存器
    -7號的話,則寫CRL寄存器,如果IO口是8-15號的話,則寫CRH寄存器,兩個32位數據寄存器(GPIOx_IDR,GPIOx_ODR)一個是只讀作輸入數據寄存器,一個是只寫作輸出寄存器,一個32位置位/復位寄存器(GPIOx_BSRR),一個16位復位寄存器(GPIOx_BRR)和一個32位鎖定寄存器(GPIOx_LCKR)。
  • STM32 串口功能 庫函數 詳解和DMA 串口高級運用(轉載)
    數據傳輸時要從支持那些相關的標準?傳輸的速度?什麼時候開始?什麼時候結束?傳輸的內容?怎樣防止通信出錯?數據量大的時候怎麼弄?硬體怎麼連接出發,當然對於stm32還要熟悉庫函數的功能具起來rs232和485電平的區別硬體外圍晶片,波特率(反映傳一位的時間),起始位和停止位,數據寬度,校驗,硬體流控制,相應連接電腦時的接口怎麼樣的。配置,使用函數,中斷,查詢並結合通信協議才算了解了串口使用。
  • STM32 高級定時器-PWM簡單使用
    TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset;//空閒狀態下的非工作狀態 不管TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;//先不管TIM_OC1Init(TIM1,&TIM_OCInitStructure); //數初始化外設
  • 亞閾值數字標準單元庫設計
    摘要:基於對0.18 μm標準CMOS工藝的研究,本文設計了一套完備的電源電壓為0.4 V的亞閾值數字標準單元庫。設計流程包括工藝研究與方案設計、單元設計與物理實現、庫文件的提取以及單元庫驗證。提出了傳統溝道寬度調節與溝長偏置相結合的尺寸調整策略,有效增強PMOS管驅動並減小漏電流,提升庫單元穩定性。
  • STM32 GPIO 相關寄存器(二)
    STM32單片機,有了埠才能和外界聯繫,學會了埠控制,才能更好地利用外設。建立和外界的聯繫,發揮自身的優點。首先介紹一下基本的GPIO相關的寄存器:1,GPIOX_CRL 低8位埠配置寄存器這個寄存器主要是對配置管腳是輸入還是輸出:其中1)MODEy[1:0]主要是配置是輸入埠還是輸出埠的。配置為輸出得時候還可以配置輸出的管腳速度等級。
  • 基於STM32的OV7670攝像頭總結
    一、OV7670模塊:本文引用地址:http://www.eepw.com.cn/article/201709/364999.htm  介紹一下OV7670傳感器:CMOS器件;標準的SCCB接口,兼容IIC接口;內置感光陣列,時序發生器,AD轉換器,模擬信號處理,數位訊號處理器.
  • STM8 STM32 數據類型
    ▲STM32的數據類型的宏定義STM32採用了大量的固件庫,其中在2.0庫中有24個數據類型如下typedef unsigned char u8;0~255一字節typedef signed char s8;-128~127typedef volatile unsigned char vu8;typedef volatile
  • 使用STM32 的DSP庫進行FFT變換
    * 使用三角函數生成採樣點,供FFT計算* 進行FFT測試時,按下面順序調用函數即可:* dsp_asm_init();* dsp_asm_test();*/#include "stm32f10x.h"#include "dsp_asm.h"#include "stm32_dsp.h"#include "table_fft.h"
  • 在知網查重中的「大學生論文聯合對比庫」具體是什麼?
    有不少同學發現用知網查重時得到的結果是符合合格標準的,但是提交到學校的知網pmlc查重系統時會顯示涉嫌抄襲,而且重複率很高的問題。這究竟是什麼原因導致呢?實際上,導致出現這個問題的最大原因很有可能是知網論文查重系統中的「大學生論文聯合比對庫」。這個「大學生論文聯合比對庫」具體是什麼?其實,像本科生的畢業論文在使用知網論查重系統時,一般都是使用知網pmlc查重系統。
  • FSMC驅動TFTLCD原理,時序和寄存器介紹
    通過這3個寄存器,可以設置FSMC訪問外部存儲器的時序參數,拓寬了可選用的外部存儲器的速度範圍。1,SRAM/NOR快閃記憶體片選控制寄存器(FSMC_BCRx)EXTMOD:     擴展模式使能位,控制是否允許讀寫不同的時序,需設置為1WREN:     寫使能位。
  • 中國知網查重中的「大學生論文聯合對比庫」是什麼?
    知網查重其實,要造成這種結果的根本原因,很有可能是知網查重系統中的」大學生論文聯合比對庫」那麼大學生論文聯合比對庫有哪些特別之處呢?首先,本科畢業論文查重系統知網pmlc中特有的一個對比庫,名字叫大學生論文聯合比對庫。其主要針對本科生的畢業論文,是每個畢業生論文都要對比的一個資料庫,而且這個資料庫是其他知網論文查重系統所沒有的。大學生論文聯合比對庫中的所有畢業論文,是不對外公開的。
  • STM32第七章-脈衝寬度調製
    捕獲/比較使能寄存器見名知意,當然是使能TIM3定時器的啊。使CC4E置位為1就可以了。捕獲/比較寄存器該寄存器總共有 4 個,對應 4 個通道 CH1~4。我們使用的是通道3。在輸出模式下,該寄存器的值與 CNT 的值比較,根據比較結果產生相應動作。利用這點,我們通過修改這個寄存器的值,就可以控制 PWM 的輸出脈寬了。
  • 【STM32】GPIO工作原理(八種工作方式分析,附電路圖)
    每個I/O口可以自由編程,但I/O口寄存器必須按32位字被訪問。只是輸出的高低電平的來源,不是讓CPU直接寫輸出數據寄存器,取而代之利用片上外設模塊的復用功能輸出來決定的。只是輸出的高低電平的來源,不是讓CPU直接寫輸出數據寄存器,取而代之利用片上外設模塊的復用功能輸出來決定的。 總結與分析1、什麼是推挽結構和推挽電路?推挽結構一般是指兩個參數相同的三極體或MOS管分別受兩互補信號的控制,總是在一個三極體或MOS管導通的時候另一個截止。