0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

HAL和LL二者能共同共同開發(fā)嗎?

工程師 ? 來源:strongerHuang ? 作者:strongerHuang ? 2020-10-27 14:35 ? 次閱讀

STM32的HAL和LL庫可以混用使用嗎?

作者:strongerHuang

微信公眾號:strongerHuang

因為STM32標(biāo)準外設(shè)庫已經(jīng)停更了,導(dǎo)致很多開發(fā)者都轉(zhuǎn)向了HAL,但一些讀者可能比較疑惑,有HAL和LL兩種庫,到底能不能混合使用呢?

一、標(biāo)準外設(shè)庫停更了

很多學(xué)習(xí)STM32的朋友都比較依賴之前的標(biāo)準外設(shè)庫(StdPeriph_Lib),我想告訴大家一個事實,那就是標(biāo)準外設(shè)庫已經(jīng)停更很久了。

支持標(biāo)準外設(shè)庫的STM32,只有相對較老的系列:F0、 F1、 F2、 F3、 F4、 L1.

我特地看了下,STM32標(biāo)準外設(shè)庫最后一次更新時間是2016年11月的F4系列。

這后面出來的L0、 L4、 L5、 F7、 H7、 G0、 G4、MP1等都沒有標(biāo)準外設(shè)庫了。

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

二者能共同共同開發(fā)嗎?

拓展閱讀:

關(guān)于STM32的四類嵌入式軟件

STM32Cube LL能高效的原因

二、HAL和LL庫能混合使用嗎?

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

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

1.不同外設(shè)混用HAL和LL庫

這里說的不同外設(shè)混用HAL和LL庫,針對的是不同外設(shè)。比如:UART使用HAL庫,SPI使用LL庫。

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

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

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

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

2.相同外設(shè)混用HAL和LL庫

這里才是本文重點,這種情況,官方其實也是不建議混合。

如果混用,會存在一系列問題:底層沖突、結(jié)構(gòu)混亂、管理不方便等。

LL庫驅(qū)動獨立,HAL包含驅(qū)動包

拿STM32F4的UART傳輸函數(shù)來說,LL庫的位于stm32f4xx_ll_usart.h:

而HAL定義于stm32f4xx_hal_uart.c:

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

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

HAL句柄

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

UART_HandleTypeDef huart1;

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

中斷請求處理

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

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

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

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10914

    瀏覽量

    356711
  • HAL
    HAL
    +關(guān)注

    關(guān)注

    2

    文章

    71

    瀏覽量

    12644
收藏 人收藏

    評論

    相關(guān)推薦

    使用ADS1299開發(fā)套件時,如何為八個通道輸入提供一個共同的外部參考?

    請問在使用ADS1299開發(fā)套件時,想要為八個通道輸入提供一個共同的外部參考,在硬件和TI提供的軟件上該如何設(shè)置?
    發(fā)表于 12-16 08:50

    請問為什么AFE4404不保密而4405保密,二者差別大嗎?

    請問為什么AFE4404不保密而4405保密,二者差別大嗎
    發(fā)表于 12-10 06:44

    HAL庫在STM32開發(fā)中的重要性

    過程 HAL庫提供了一套完整的函數(shù)接口,用于操作STM32微控制器的各種外設(shè)和功能模塊。這些函數(shù)接口封裝了底層硬件的復(fù)雜性,使得開發(fā)者無需深入了解硬件細節(jié)即可實現(xiàn)功能。因此,HAL庫大大簡化了STM32的
    的頭像 發(fā)表于 12-02 13:35 ?447次閱讀

    TQP3M9035和TQP3M9036有什么區(qū)別?二者是否Pin-to-Pin兼容?

    TQP3M9035和TQP3M9036有什么區(qū)別?二者是否Pin-to-Pin兼容?
    發(fā)表于 08-13 07:16

    ESP32C3是否支持與RHD2164進行DDR SPI通信呢?二者能否兼容?

    ESP32C3芯片(主機)是否支持與Intan公司生產(chǎn)的RHD2164芯片(從機)進行DDR SPI通信呢?二者能否兼容?[/https://intantech.com/files/Intan_RHD2164_datasheet.pdf]
    發(fā)表于 07-01 06:12

    日本Rapidus攜手IBM深化合作,共同進軍2nm芯片封裝技術(shù)

    在全球半導(dǎo)體技術(shù)日新月異的今天,日本先進代工廠Rapidus與IBM的強強聯(lián)合再次引發(fā)了業(yè)界的廣泛關(guān)注。6月12日,Rapidus宣布,他們與IBM在2nm制程領(lǐng)域的合作已經(jīng)從前端擴展至后端,雙方將共同開發(fā)芯粒(Chiplet)先進封裝量產(chǎn)技術(shù),這一舉措無疑將推動半導(dǎo)體封裝技術(shù)的進一步革新。
    的頭像 發(fā)表于 06-14 15:48 ?813次閱讀

    手把手帶你移植HAL庫函數(shù)

    開發(fā)者更高效地進行嵌入式開發(fā)。手把手帶你移植HAL庫函數(shù)HAL庫提供了一套抽象接口,使開發(fā)者無需直接操作底層硬件寄存器,就能實現(xiàn)對硬件的控制
    的頭像 發(fā)表于 05-18 08:04 ?2017次閱讀
    手把手帶你移植<b class='flag-5'>HAL</b>庫函數(shù)

    報名開啟!第屆OpenHarmony開發(fā)者大會2024重磅來襲!

    分論壇”為承載,聚焦OpenHarmony 技術(shù)革新,攜手百位技術(shù)專家共同交流開發(fā)者關(guān)心的技術(shù)內(nèi)容,全方位了解最新技術(shù)進展。 OpenHarmony開源三年多以來,社區(qū)快速成長,已成為“下一代智能終端
    發(fā)表于 05-14 15:23

    瑞薩電子與欣旺達動力達成合作共識,共同開發(fā)BMS與網(wǎng)關(guān)解決方案

    近日,瑞薩電子與欣旺達動力科技股份有限公司達成合作共識,雙方共同宣布,將攜手為快速增長的電動汽車(EV)市場設(shè)計汽車BMS與網(wǎng)關(guān)解決方案。
    的頭像 發(fā)表于 05-10 10:14 ?510次閱讀
    瑞薩電子與欣旺達動力達成合作共識,<b class='flag-5'>共同開發(fā)</b>BMS與網(wǎng)關(guān)解決方案

    壁仞科技正式加入大模型應(yīng)用生態(tài)共同

    3月23日,2024全球開發(fā)者先鋒大會于上海徐匯舉辦,并正式啟動大模型應(yīng)用生態(tài)共同體。大會期間,壁仞科技作為算力企業(yè)代表之一參加啟動儀式,正式加入該生態(tài)共同體。
    的頭像 發(fā)表于 03-25 10:00 ?596次閱讀

    請問HALLL庫分別在什么場合使用?

    請問HALLL庫分別在什么場合使用?LL庫簡單明了,為啥不是主流使用???還有為啥L03的例程中有較多的LL庫例子,而其他L0芯片幾乎沒有,輕問官方是否不太支持
    發(fā)表于 03-25 08:08

    STM32L471RE同樣的硬件使用LL庫和HAL編譯的工程運行功耗不一樣?為什么?

    項目在使用STM32L471RE開發(fā),涉及到低功耗的處理。在測試過程中發(fā)現(xiàn)同樣的硬件結(jié)構(gòu)(PCB上僅焊接mcu的最小系統(tǒng)),使用LL庫和HAL庫生產(chǎn)的兩個工程運行功耗不一樣,工程配置時鐘為4M 的MSI ,其他外設(shè)不配置,生成的
    發(fā)表于 03-21 06:17

    日本NTT和英特爾將共同開發(fā)下一代半導(dǎo)體

    日本NTT公司和英特爾公司近日宣布,將與多家半導(dǎo)體廠商合作,共同開展新一代“光電融合”半導(dǎo)體的技術(shù)合作和批量生產(chǎn)。據(jù)悉,日本政府將為這一項目提供450億日元(約合人民幣22億元)的支援。
    的頭像 發(fā)表于 01-30 10:17 ?678次閱讀

    您有一份OpenHarmony開發(fā)者論壇2023年度總結(jié),請查收~

    ,OpenHarmony 開發(fā)者論壇也整理不同的榜單,讓更多的人看到這些優(yōu)秀的貢獻。也為這些貢獻突出的各位開發(fā)者準備了一些周邊禮品,以表謝意。希望我們一起把 OpenHarmony
    發(fā)表于 01-26 17:27

    恩智浦與MicroEJ共同開發(fā)新平臺加速器

    恩智浦與MicroEJ共同開發(fā)的新平臺加速器,利用具有標(biāo)準API的軟件容器,為工業(yè)和物聯(lián)網(wǎng)邊緣應(yīng)用帶來與智能手機類似的軟件設(shè)計靈活性,幫助客戶大幅降低開發(fā)成本,縮短產(chǎn)品上市時間。
    的頭像 發(fā)表于 01-22 10:16 ?750次閱讀