91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

標(biāo)準(zhǔn)庫函數(shù)與基于HAL庫函數(shù)的說明

電子設(shè)計(jì) ? 來源:電子設(shè)計(jì) ? 作者:電子設(shè)計(jì) ? 2020-12-25 16:47 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

開始學(xué)習(xí)51的時(shí)候有的人會(huì)直接選擇進(jìn)行對(duì)單片機(jī)寄存器進(jìn)行操作,可以很好的理解單片機(jī)的工作原理,對(duì)于代碼的編寫也會(huì)后很好的理解,但是在stm32的時(shí)候操作寄存器就不太行了,因?yàn)閟tm32的寄存器是51的數(shù)十倍,如此多的寄存器根本無法全部記憶,開發(fā)時(shí)需要經(jīng)常的翻查芯片的數(shù)據(jù)手冊(cè),此時(shí)直接操作寄存器就變得非常的費(fèi)力了。這是我們就有了其他的操作方式,來簡(jiǎn)化我們的工作。

一、標(biāo)準(zhǔn)庫

STM32有非常多的寄存器,導(dǎo)致了開發(fā)困難,所以為此ST公司就為每款芯片都編寫了一份庫文件,也就是工程文件里stm32F1xx……之類的。在這些 .c .h文件中,包括一些常用量的宏定義,把一些外設(shè)也通過結(jié)構(gòu)體變量封裝起來,如GPIO口時(shí)鐘等。所以我們只需要配置結(jié)構(gòu)體變量成員就可以修改外設(shè)的配置寄存器,從而選擇不同的功能。也是目前最多人使用的方式,也是學(xué)習(xí)STM32接觸最多的一種開發(fā)方式。

二、HAL庫

HAL庫是ST公司目前主力推的開發(fā)方式,全稱就是Hardware Abstraction Layer(抽象印象層)。庫如其名,很抽象,一眼看上去不太容易知道他的作用是什么。它的出現(xiàn)比標(biāo)準(zhǔn)庫要晚,但其實(shí)和標(biāo)準(zhǔn)庫一樣,都是為了節(jié)省程序開發(fā)的時(shí)期,而且HAL庫尤其的有效,如果說標(biāo)準(zhǔn)庫把實(shí)現(xiàn)功能需要配置的寄存器集成了,那么HAL庫的一些函數(shù)甚至可以做到某些特定功能的集成。也就是說,同樣的功能,標(biāo)準(zhǔn)庫可能要用幾句話,HAL庫只需用一句話就夠了。并且HAL庫也很好的解決了程序移植的問題,不同型號(hào)的stm32芯片它的標(biāo)準(zhǔn)庫是不一樣的,但使用HAL庫,只要使用的是相通的外設(shè),程序基本可以完全復(fù)制粘貼,注意是相通外設(shè),意思也就是不能無中生有。而且使用ST公司研發(fā)的STMcube軟件,可以通過圖形化的配置功能,直接生成整個(gè)使用HAL庫的工程文件,可以說是方便至極。

三、庫函數(shù)與HAL庫對(duì)比

1.串口通信實(shí)驗(yàn)庫函數(shù)部分代碼

HAL函數(shù)代碼

2.庫函數(shù)與HAL庫比較庫函數(shù)配置好串口以后,當(dāng)串口接收到數(shù)據(jù)再發(fā)送給上位機(jī)時(shí)需要循環(huán)發(fā)送,但是HAL庫就直接調(diào)用HAL_UART_Transmit函數(shù)就能直接將串口的數(shù)據(jù)發(fā)給上位機(jī)。庫函數(shù)不免比HAL更加的麻煩。庫函數(shù)的串口通信函數(shù)只適用于STM32F1系列,對(duì)于其他系列的就不能通用了;但是對(duì)于HAL庫來說,只要外設(shè)相同,基本上能夠很容易的移植。可以說HAL庫就是用來取代之前的標(biāo)準(zhǔn)外設(shè)庫的。

總結(jié)

相比標(biāo)準(zhǔn)外設(shè)庫,STM32Cube HAL庫表現(xiàn)出更高的抽象整合水平,HAL API集中關(guān)注各外設(shè)的公共函數(shù)功能,這樣便于定義一套通用的用戶友好的API函數(shù)接口,從而可以輕松實(shí)現(xiàn)從一個(gè)STM32產(chǎn)品移植到另一個(gè)不同的STM32系列產(chǎn)品。對(duì)于我們這種水平的新手而言,HAL更加的友好,可以降低我們開發(fā)的門檻,但是如果想要更好的理解代碼實(shí)現(xiàn)的原理以及對(duì)寄存器的調(diào)用原理,標(biāo)準(zhǔn)庫更好的理解,可能相對(duì)較難,但是理解代碼的實(shí)現(xiàn)也是我們必須的。

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

    關(guān)注

    3

    文章

    4419

    瀏覽量

    67680
  • 應(yīng)用軟件
    +關(guān)注

    關(guān)注

    0

    文章

    53

    瀏覽量

    9425
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    matlab調(diào)用dll動(dòng)態(tài)庫函數(shù),死機(jī)問題,如何強(qiáng)行跳出?

    matlab調(diào)用dll動(dòng)態(tài)庫中的函數(shù),例如圖莫斯,發(fā)送數(shù)據(jù)時(shí),經(jīng)常會(huì)卡死,是否有辦法限制時(shí)間,比如3秒,沒有回應(yīng),就強(qiáng)行結(jié)束函數(shù)調(diào)用。執(zhí)行后續(xù)邏輯。
    發(fā)表于 12-31 10:14

    在ADS編譯器中,用標(biāo)準(zhǔn)的C庫函數(shù)printf()需要哪些設(shè)置呢?

    在ADS編譯器中,用標(biāo)準(zhǔn)的C庫函數(shù)printf()需要哪些設(shè)置呢?又在哪兒可以看到printf()輸出的信息呢?
    發(fā)表于 12-23 07:32

    請(qǐng)問CW32微控制器是否提供軟件開發(fā)工具和庫函數(shù)支持?

    CW32微控制器是否提供軟件開發(fā)工具和庫函數(shù)支持?
    發(fā)表于 12-16 08:11

    labview調(diào)用pylon庫函數(shù)失敗

    在labview中去調(diào)用pylon庫函數(shù)。labview2018(32位),pylon(202506),ni vas,ni vdm均安裝。dll文件為runtime文件下win32
    發(fā)表于 12-11 13:20

    微庫與標(biāo)準(zhǔn)C庫的區(qū)別

    主要的差異: 1.代碼(數(shù)據(jù))量更?。▽?duì)比上圖)。 2.缺少一些不常用標(biāo)準(zhǔn)庫函數(shù),比如:文件 I/O 的庫函數(shù)。 3.微庫最大程度優(yōu)化代碼量,可能會(huì)導(dǎo)致有些庫代碼運(yùn)行速度更慢。 4.可用于RTOS這類
    發(fā)表于 12-09 07:49

    LUA例程-常用的回調(diào)函數(shù)使用說明

    詳細(xì)說明LUA腳本函數(shù)功能和對(duì)應(yīng)的應(yīng)用實(shí)例。對(duì)于LUA腳本編程有很大的幫助和提高技能。
    發(fā)表于 11-24 16:43 ?0次下載

    單片機(jī)啟動(dòng)&庫函數(shù)的構(gòu)成

    文件中找到那個(gè)叫SystemInit的東西,這是個(gè)函數(shù)名字,一般來講都可以在廠商提供的庫函數(shù)中找到,cw32的在下面這個(gè)圖的文件里 5.在執(zhí)行完SystemInit函數(shù)的這三行代碼之后,單片機(jī)
    發(fā)表于 11-18 08:15

    深度剖析Nios II 處理器的硬件抽象層

    )與ANSI C標(biāo)準(zhǔn)庫綜合在一起,可使用類似C語言的庫函數(shù)來訪問硬件設(shè)備或文件,如printf()、fopen()、fwrite()等函數(shù)。軟件工程師可非常方便的使用這些函數(shù)來與底層硬
    的頭像 發(fā)表于 10-31 15:25 ?5053次閱讀
    深度剖析Nios II 處理器的硬件抽象層

    在rtthread的main函數(shù)里用HAL_Delay函數(shù)不起作用是哪里的問題?

    在rtthread的main函數(shù)里用HAL_Delay函數(shù)無效,我設(shè)置延時(shí)500ms打印一次,但是實(shí)際上,一秒打印了幾百次,很顯然是HAL_Delay出現(xiàn)了問題。用RT_thread_
    發(fā)表于 09-15 07:53

    詳解hal_entry入口函數(shù)

    當(dāng)使用RTOS時(shí),程序從main函數(shù)開始進(jìn)行線程調(diào)度;當(dāng)沒有使用RTOS時(shí),C語言程序的入口函數(shù)main函數(shù)調(diào)用了hal_entry函數(shù)。由
    的頭像 發(fā)表于 07-25 15:34 ?2066次閱讀

    求CS32A010K8V7的庫函數(shù)使用教程

    請(qǐng)問有CS32A010K8V7的庫函數(shù)使用教程嗎,官網(wǎng)的庫函數(shù)自帶的文字說明感覺不是很看得明白呢
    發(fā)表于 07-18 23:20

    自己寫庫:構(gòu)建庫函數(shù)雛形

    實(shí)際上,構(gòu)建固件庫是一件費(fèi)時(shí)費(fèi)力的事情,并且它對(duì)開發(fā)者對(duì)芯片的熟悉程度有一定的要求。甚至,當(dāng)一個(gè)固件庫的封裝程度很高時(shí),想要閱讀并理解該固件庫的底層代碼也會(huì)變成一件有較高難度的事情。瑞薩RA系列單片機(jī)所使用的官方FSP庫便是這樣的一種封裝程度很高的固件庫。所幸的是,F(xiàn)SP庫的意義在于為開發(fā)者封裝硬件底層,因此一般而言,F(xiàn)SP庫是帶來方便的,開發(fā)者只需學(xué)會(huì)如何使用FSP庫即可,而不用深入到FSP庫的底層細(xì)節(jié)。
    的頭像 發(fā)表于 06-19 11:19 ?1207次閱讀
    自己寫庫:構(gòu)建<b class='flag-5'>庫函數(shù)</b>雛形

    MSP430常用內(nèi)聯(lián)函數(shù)說明

    電子發(fā)燒友網(wǎng)站提供《MSP430常用內(nèi)聯(lián)函數(shù)說明.docx》資料免費(fèi)下載
    發(fā)表于 06-05 17:20 ?0次下載

    STM32的幾種開發(fā)方式,你都知道嗎?(可下載)

    經(jīng)常有人會(huì)問,你們 STM32 編程是用庫函數(shù) 還是用寄存器的...會(huì)說庫函數(shù)方便,容 易,都用庫函數(shù)...等等這樣的問題,今天我們就來 dis 一下這幾種編程方式,STM32 編程 目前常見的幾種
    發(fā)表于 04-03 11:24 ?0次下載