RM新时代网站-首页

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

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

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

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

工程師 ? 來(lái)源:strongerHuang ? 作者:strongerHuang ? 2020-10-27 14:35 ? 次閱讀

STM32的HAL和LL庫(kù)可以混用使用嗎?

作者:strongerHuang

微信公眾號(hào):strongerHuang

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

一、標(biāo)準(zhǔn)外設(shè)庫(kù)停更了

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

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

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

這后面出來(lái)的L0、 L4、 L5、 F7、 H7、 G0、 G4、MP1等都沒(méi)有標(biāo)準(zhǔn)外設(shè)庫(kù)了。

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

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

拓展閱讀:

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

STM32Cube LL能高效的原因

二、HAL和LL庫(kù)能混合使用嗎?

這個(gè)問(wèn)題的答案是:不建議共同使用。

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

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

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

這種情況下,一般來(lái)說(shuō):?jiǎn)栴}不大。

因?yàn)楣俜讲还苁菑?a href="http://m.hljzzgx.com/soft/special/" target="_blank">資料,還是從STM32CubeMX工具配置都沒(méi)有反對(duì)這種做法。

雖沒(méi)有明確說(shuō)不允許這樣操作,但實(shí)際項(xiàng)目不建議這種方式。

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

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

這里才是本文重點(diǎn),這種情況,官方其實(shí)也是不建議混合。

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

LL庫(kù)驅(qū)動(dòng)獨(dú)立,HAL包含驅(qū)動(dòng)包

拿STM32F4的UART傳輸函數(shù)來(lái)說(shuō),LL庫(kù)的位于stm32f4xx_ll_usart.h:

而HAL定義于stm32f4xx_hal_uart.c:

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

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

HAL句柄

對(duì)于LL而言,使用HAL庫(kù),會(huì)多一個(gè)句柄,比如UART1:

UART_HandleTypeDef huart1;

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

中斷請(qǐng)求處理

HAL和LL的中斷請(qǐng)求IRQ方式其實(shí)是不一樣的,混用之后很容易出錯(cuò)。

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

當(dāng)然,不是絕對(duì)的(不能混用),我想說(shuō):萬(wàn)不得已,慎用。

責(zé)任編輯:haq

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

    關(guān)注

    2270

    文章

    10895

    瀏覽量

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

    關(guān)注

    2

    文章

    70

    瀏覽量

    12607
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

    請(qǐng)問(wèn)為什么AFE4404不保密而4405保密,二者差別大嗎?

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

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

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

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

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

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

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

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

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

    報(bào)名開(kāi)啟!第屆OpenHarmony開(kāi)發(fā)者大會(huì)2024重磅來(lái)襲!

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

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

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

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

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

    請(qǐng)問(wèn)HALLL庫(kù)分別在什么場(chǎng)合使用?

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

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

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

    軟通動(dòng)力與鴻蒙生態(tài)服務(wù)雙方將共同聚焦鴻蒙原生應(yīng)用開(kāi)發(fā)和培訓(xùn)領(lǐng)域

    3月8日,軟通動(dòng)力與鴻蒙生態(tài)服務(wù)(深圳)有限公司(以下簡(jiǎn)稱“鴻蒙生態(tài)服務(wù)公司”)簽署合作協(xié)議,雙方將共同聚焦鴻蒙原生應(yīng)用開(kāi)發(fā)和培訓(xùn)領(lǐng)域
    的頭像 發(fā)表于 03-14 09:54 ?500次閱讀

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

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

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

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

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

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