STM32的HAL與LL庫能共同使用(混用)嗎?

2020-12-24 電子發燒友

STM32的HAL與LL庫能共同使用(混用)嗎?

黃工的嵌入式技術 發表於 2020-02-28 16:57:10

這是一位讀者問的問題,我覺得很多人應該都有這種疑惑,所以特地寫篇文章分享給大家。

一、標準外設庫停更了

很多學習STM32的朋友都比較依賴之前的標準外設庫(StdPeriph_Lib),我想告訴大家一個事實,那就是標準外設庫已經停更很久了。

支持標準外設庫的STM32,只有相對較老的系列:F0、 F1、 F2、 F3、 F4、 L1.

我特地看了下,STM32標準外設庫最後一次更新時間是2016年11月的F4系列。

標準外設庫地址:

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

這後面出來的L0、 L4、 L5、 F7、 H7、 G0、 G4等都沒有標準外設庫了。

所以,使用STM32CubeHAL將成為今後的的主流。這裡就出來了一個問題:該使用HAL,還是LL開發呢?

二者能共同共同開發嗎?

拓展文章:

關於STM32的四類嵌入式軟體庫

STM32Cube LL能高效的原因


二、HAL和LL庫能共同使用嗎?

這個問題的答案是:不建議共同使用。

當然,這個問題還要分情況:相同外設和不同外設之間共同使用HAL和LL庫。

1.不同外設混用HAL和LL庫

這裡說的不同外設混用HAL和LL庫針對的不同外設。比如:UART使用HAL庫,SPI使用LL庫。

這種情況下,一般來說:沒問題。

因為官方不管是從資料,還是從STM32CubeMX工具配置都沒有反對這種做法。

這雖然沒有明確說不允許這樣操作,但實際項目不建議這種方式。

至於原因,相信不用我說,有項目經驗的朋友都明白。這樣做不利於代碼移植,管理等工作。

2.相同外設混用HAL和LL庫

這裡才是本文重點,這種情況,官方其實也是建議:不允許。

這樣混用,會存在一系列問題:底層衝突、結構混亂、管理不方便等。

LL庫驅動獨立,HAL包含驅動包

拿STM32F4的UART傳輸函數來說,LL庫的位於stm32f4xx_ll_usart.h:

而HAL定義於stm32f4xx_hal_uart.c:

從這裡可以看得出來,LL只需包含頭文件即可,HAL要包含bsp包。

假如使用LL庫的工程,想使用HAL庫,需添加bsp包到工程。

HAL句柄

對於LL而言,使用HAL庫,會多一個句柄,比如UART1:

UART_HandleTypeDef huart1;

如果LL庫的工程,直接調用HAL接口是不行的,缺少句柄。

中斷請求處理

HAL和LL的中斷請求IRQ方式其實是不一樣的,混用之後很容易出錯。

這裡簡單舉例說這些,深入理解底層的朋友應該知道,還有許多地方也是不建議混用。

當然,不是絕對的(不能混用),我想說:萬不得已,慎用。

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • STM32四種庫對比:寄存器、標準外設庫、HAL、LL
    GPIOC->MODER |= GPIO_MODER_MODER0; } STM32Snippets是高度優化的示例代碼集合,使用符合 每個STM32系列的100多個片段演示了如何以最小的內存佔用有效地使用STM32外圍設備。
  • 標準庫函數與基於HAL庫函數
    開始學習51的時候有的人會直接選擇進行對單片機的寄存器進行操作,可以很好的理解單片機的工作原理,對於代碼的編寫也會後很好的理解,但是在stm32的時候操作寄存器就不太行了,因為stm32的寄存器是51的數十倍,如此多的寄存器根本無法全部記憶,開發時需要經常的翻查晶片的數據手冊,此時直接操作寄存器就變得非常的費力了。
  • STM32ADC使用方法解析
    因項目需要使用到STM32的ADC功能,雖然對ADC的使用並不陌生,但是第一接觸stm32的ADC功能還是有種無從下手的感覺,主要是因為STM32ADC設計較為複雜,一時對相關的專業術語較為生疏,此外固件庫中涉及到的函數雖都進行了分門別類但是還是感覺函數較多,難以很快掌握,現就將個人理解寫出,以便大家共同進步。
  • STM32-(05):GPIO原理與操作
    目前使用的是查詢方式進行延時。if(type==CALC_TYPE_S 發表於 2020-12-18 stm32定時器主從模式 TIM2作master;TIM3,TIM4作slave定時器2事件更新被用作觸發輸出TRGO從定時器TIM3,TIM4工作在從模式
  • stm32的gpio模擬iic小記
    在用stm32的模擬iic讀取mpu6050時發現讀whoami寄存器為0xd1,而正確的值應該為0x68,導致這個問題基本上有以下幾個原因:    1、如果是杜邦線連接,線太長且線質量不好會導致這個問題;    2、上拉電阻不合適,上拉電阻不合適的話會導致iic兩根線上的波形不好
  • 手機廠商為什麼要混用屏幕?都用三星不好嗎 真相了
    目前,主流手機屏幕均來自三星、京東方、LG這三家,而幾乎手機廠商都會兩家或三家混用,從iPhone 12到華為Mate 40,從小米到OV,無一例額外。為什麼要混用屏幕?都用三星不好嗎?日前,魯大師對此進行了科普。簡單來說,主要有三個原因。
  • STLINK-V3SET|用於STM32 / STM8的在線程式開發工具和燒錄器
    modular in-circuit debugger and programmer for STM32/STM8https://www.st.com/content/st_com/en/products/development-tools/hardware-development-tools/hardware-development-tools-for-stm32
  • 用stm32控制4位數碼管_stm32控制共陰數碼管
    1、stm32控制4位共陽數碼管輸出計數 用stm32控制4位數碼管,需要用到GPIO口 PA0~PA11共12個引腳。首先我們來看看數碼管的原理圖。 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_InitStructure); } 這裡有個要注意的,根據原理圖可以看出數碼管一次只能輸出一位數組,所以如果是多位的必須使用掃描的方式輸出
  • esp32和stm32哪個好_ESP32對比ESP8266
    esp32和stm32哪個好_ESP32對比ESP8266 單片機愛好者 發表於 2020-04-23 11:06:19   esp32和stm32哪個好
  • 聽歌學韓語:2pm《I'll be back》
    그 누구도 너를 나보다 사랑 할 순 없기에   因為誰都無法像我一樣愛你 갑자기 이럼 어떡해   怎能突然這樣난 어떻게 하란 말야 네가 도대체  你這樣叫到底我怎麼辦어떻게 이래 난 /這樣的我該怎麼辦네가 날 영원히 사랑할거란 말 믿었단 말야  讓我相信你說的會愛我到永遠약속했잖아 영원히 변하지 말자고
  • Reno5混用屏幕,竟然公然寫在官網上面!
    不同的人有不同的待遇,相信很多人都遇到過這種情況,但是同一款手機也有不同的待遇,你遇到過嗎?說簡單一些,就是同一款手機混用不同的零部件。其實這種事情在手機圈裡非常常見,甚至說是一件很正常的事情。iPhone 12使用了三星、LG的屏幕;榮耀30Pro採用的是周冬雨排列,而榮耀30Pro+採用的是delta排列。之前某款華為手機混用UFS3.0和2.1快閃記憶體晶片。其實手機廠商這麼做的目的也很容易理解,像蘋果、華為、小米這樣的大企業,手機的銷售量是非常巨大的,為了保障充足的供應和議價優勢,肯定會選購不同的供應商。
  • 手機廠商為什麼都要混用屏幕,都用三星的不好嗎?三個理由
    但仔細觀察來看,無論是iPhone12還是華為mate40系列,無一例外都是採用混用顯示屏的方式,這讓不少網友感到困惑。就拿華為mate40 pro來說,據了解屏幕供應商為LG、京東方和三星,其中三星屏在最高價位的mate40Rs得到適配。
  • 不止西數 希捷HDD硬碟也會CMR、SMR混用
    現在西數的紅盤已經確定是SMR、CMR硬碟混用,壞消息是希捷也會如此,兩大HDD巨頭這點倒是很默契。討厭SMR之前,先得了解下SMR技術是什麼?儘管如此,由於SMR能夠提升HDD硬碟容量,所以西數、希捷從2015年以來一直在大力推動SMR硬碟發展,未來佔比只會提升,至少能佔到50%份額。此前HDD廠商還比較良心,在部分產品上使用SMR技術,與PMR硬碟還是能夠區分的,現在開始混用,同一系列的硬碟也有可能使用SMR硬碟。
  • 你真的會使用殺蟲劑嗎?殺蟲劑使用幾大誤區要知道!
    除了日常管理,使用殺蟲劑是最常見的解決方式。但是,你真的會用殺蟲劑嗎?我們整理了殺蟲劑使用過程中幾個常見的誤區,趕緊看看吧! ,最好能有幾種殺蟲劑交替配合使用。在氣溫較高(20度以上)時使用效果較好,常在6~9月份使用為宜。 10、吡蟲啉 該藥對天敵毒性低。 在推薦劑量下使用安全,能和多數農藥或肥料混用 。 不能用於防治線蟲和蟎。
  • 手機廠商為啥要混用屏幕
    主流手機屏幕均來自三星、京東方、LG這三家,而幾乎手機廠商都會兩家或三家混用,那麼這是為什麼呢?首先,手機出貨量大,三星屏幕供應不及。三星的OLED屏幕要供給蘋果、小米、OV等廠商,有時候三星自己的手機屏幕都供不應求,廠商能難道的貨非常少。
  • stm32的VCC/VDD/VSS/VEE/VBAT的區別
    如果應用中沒有使用外部電池,VBAT引腳應接到VDD引腳上。一、usb_desc.c文件 根據你程序使用的通信方式修改。波特率的計算方法:STM32--UART異步通信學習  USART的編程:   1.定義USART_InitTypeDef類型的結構體 UART_init   2.使能GPIO的時鐘和USART的時鐘。(UART1 PA9為TX,PA9為RX)   3.配置UART_init結構體的各參數。
  • 種玉米,用在玉米田雜草防除的混用除草劑有哪些?
    適合玉米田苗後莖葉處理的除草劑有很多,像煙嘧磺隆、氰草津、碸嘧磺隆、硝磺草酮•莠去津等,大家應該都使用過,下面咱們分享一下玉米田莖葉雜草防除效果好的混用組合除草劑有哪些。 混用後能有效防治年生禾本雜草、一年生闊葉雜草和莎草科雜草。因降低了莠去津的用量,從而提高了對後茬作物的安全性。在玉米苗後、雜草2~4葉期進行莖葉處理,用4%煙嘧磺隆水劑67毫升/畝+ 40%莠去津懸浮劑100毫升/畝,對水噴施,現混現用。
  • 不止相機,榮耀30S屏幕也被爆各種混用,真的是不應該!
    不過這兩天相繼有一些大V曝光,表示榮耀30S的屏幕混用,面板有京東方,華星光電,天馬三家。知名數碼爆料人數碼閒聊站也表示榮耀30系列和華為Nova7系列混用京東方,維信諾和三星。
  • 英俄「混合接種」新冠疫苗,靠譜嗎?中國專家:不同廠家疫苗不宜混用
    無獨有偶,俄羅斯也宣布將在烏克蘭對混合使用新冠疫苗展開臨床研究。這些混合接種疫苗的做法靠譜嗎?美國《紐約時報》1日稱,英國政府批准接種輝瑞與阿斯利康新冠疫苗後,最近更新相關規範,允許「混合接種」已批准的新冠疫苗。根據指導方針,若民眾無法獲得同款疫苗的第二劑,或者不清楚第一劑疫苗的藥廠,則第二劑可使用另一款疫苗代替接種。
  • 紙巾混用的做法並不可取
    | 紙巾混用的做法並不可取 用衛生紙擦嘴,如廁時用面巾紙?市中醫醫院皮膚科醫生翁鶴說,只要洗臉巾是合格產品,使用後皮膚不會出現過敏或其他不適症狀,就可放心使用。不同紙巾用途不同有人用紙很講究,也有人很不講究。「前段時間超市搞促銷,紙製品優惠力度挺大,於是我一下子搶購了三四提衛生紙回家。這下好了,家裡洗臉臺、坐便器、餐桌旁邊都放了一卷卷衛生紙,需要的時候扯一段就可以了,既方便又省錢。」