• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      STM32開(kāi)發(fā)庫(kù)介紹與比較

      2021-06-30 01:43:34蘇州大學(xué)工程學(xué)院鄒霄貝
      電子世界 2021年11期
      關(guān)鍵詞:外設(shè)固件中間件

      蘇州大學(xué)工程學(xué)院 鄒霄貝

      目前,意法半導(dǎo)體公司就STM32的開(kāi)發(fā)提供了數(shù)種開(kāi)發(fā)工具,它們各有其優(yōu)缺點(diǎn)和適用對(duì)象。本文將從使用方法、便攜性、工具的抽象程度以及它們的局限性等方面對(duì)STM32Snippets,標(biāo)準(zhǔn)外設(shè)庫(kù)以及基于STM32Cube的HAL APIs和Low-Layer APIs進(jìn)行介紹,同時(shí)對(duì)它們的特點(diǎn)進(jìn)行橫向的比較和分析。

      目前,STM32嵌入式的開(kāi)發(fā)和使用主要依靠于STM32嵌入式軟件提供的各種開(kāi)發(fā)庫(kù)及其配套的軟件,選擇合適的軟件會(huì)讓STM32的開(kāi)發(fā)和使用事半功倍。而不同的開(kāi)發(fā)庫(kù)的便攜性、抽象程度和適用的芯片系列等都各不相同,開(kāi)發(fā)的需求與庫(kù)的選擇也息息相關(guān)。

      因此,本文對(duì)目前SMT32官方提供的STM32Snippets、標(biāo)準(zhǔn)外設(shè)庫(kù)、HAL APIs和Low-Layer APIs的內(nèi)容和特點(diǎn)進(jìn)行了整合研究,并對(duì)其適用范圍進(jìn)行了分析對(duì)比,從而獲得對(duì)開(kāi)發(fā)庫(kù)的更全面的認(rèn)識(shí)。

      1 STM32Snippets

      STM32Snippets是高度兼容的代碼示例的集合,可以直接應(yīng)用于文檔和軟件包,這些示例通過(guò)進(jìn)行直接寄存器訪問(wèn)來(lái)減少代碼量,從而STM32的MCU的性能最大化利用。

      由于STM32Snippets是操作于最底層的,因此需要開(kāi)發(fā)者對(duì)寄存器進(jìn)行直接操作,開(kāi)發(fā)者需要對(duì)底層結(jié)構(gòu)和寄存器比較了解,同時(shí)需要對(duì)匯編程序有較深的理解。同時(shí),因?yàn)镾TM32Snippets具有能進(jìn)行寄存器級(jí)別的訪問(wèn)和調(diào)試的特點(diǎn),在提供的開(kāi)發(fā)庫(kù)中它的優(yōu)化程度最高。

      但是,STM32Snippets僅使用于STM32系列,采取這種方式進(jìn)行項(xiàng)目的開(kāi)發(fā)很難實(shí)現(xiàn)不同系列之間的移植。同時(shí),STM32并不涵蓋例如USB之類的外設(shè)的代碼段示例,如果要進(jìn)行一些復(fù)雜的外設(shè)應(yīng)用,可能需要額外耗費(fèi)很多的時(shí)間。此外,STM32Snippets僅可在STM32 L0和F0系列上使用。

      2 標(biāo)準(zhǔn)外設(shè)庫(kù)

      標(biāo)準(zhǔn)外設(shè)庫(kù)(即Standard Peripheral Libraries,簡(jiǎn)稱SPL),是涵蓋STM32外設(shè)的C語(yǔ)言庫(kù),標(biāo)準(zhǔn)外設(shè)庫(kù)將一些基本的寄存器操作封裝成庫(kù)函數(shù)使用,較HAL庫(kù)而言,依舊接近于寄存器操作。

      標(biāo)準(zhǔn)外設(shè)庫(kù)目前幾乎是使用者最多的庫(kù),在STM32Cube發(fā)布前,幾乎所有的STM32用戶均使用標(biāo)準(zhǔn)外設(shè)庫(kù)。標(biāo)準(zhǔn)外設(shè)庫(kù)覆蓋了所有的外圍設(shè)備,極大地方便了項(xiàng)目的開(kāi)發(fā),提高了編程效率。同時(shí),標(biāo)準(zhǔn)固件庫(kù)還涵蓋許多復(fù)雜中間件的擴(kuò)展,例如USB、TCPIP、Graphics等,進(jìn)一步方便了使用者的開(kāi)發(fā)。標(biāo)準(zhǔn)固件庫(kù)的結(jié)構(gòu)清晰,在調(diào)用上比較簡(jiǎn)單,且各系列的標(biāo)準(zhǔn)固件庫(kù)差別不大,在不同固件庫(kù)間進(jìn)行程序移植時(shí)也比較簡(jiǎn)單。

      圖1所示為STM32F10xxx系列的文件基本架構(gòu),其他系列的文件架構(gòu)基本與STM32F10xxx系列一致。

      圖1 STM32F10xxx標(biāo)準(zhǔn)外設(shè)庫(kù)架構(gòu)

      但是,標(biāo)準(zhǔn)固件庫(kù)僅適用于特定的STM32系列,并且沒(méi)有通用的硬件抽象層應(yīng)用程序接口,并不是每一個(gè)系列間都有統(tǒng)一的中間件庫(kù),在系列間的移植性較差。同時(shí),在選擇標(biāo)準(zhǔn)固件庫(kù)時(shí)也要注意,標(biāo)準(zhǔn)固件庫(kù)不支持從STM32 L0,L4和F7開(kāi)始的STM32系列。

      3 基于STM32Cube的開(kāi)發(fā)庫(kù)(圖2)

      圖2 STM32Cube功能示意圖

      STM32Cube是一個(gè)功能齊全的軟件包,它包含直接基于STM32外設(shè)寄存器的應(yīng)用程序接口(API),因此在整個(gè)STM32內(nèi)部都具有高度可移植性。同樣,STM32Cube中包含和SPL外設(shè)相似的初始化API。

      STM32Cube還提供了STM32CubeMX這個(gè)可視化配置軟件,通過(guò)STM32CubeMX,用戶可以通過(guò)圖形向?qū)?shí)現(xiàn)生成初始化C代碼,引腳多路復(fù)用,時(shí)鐘樹(shù)設(shè)置,外圍設(shè)備配置和中間件設(shè)置等。STM32Cube軟件包中包含調(diào)用標(biāo)準(zhǔn)化的API的可移植性硬件抽象層庫(kù)(即HAL庫(kù))、輕量高效的底層API(即LL庫(kù))等內(nèi)容。

      3.1 HAL APIs

      HAL庫(kù),即硬件抽象層,它涵蓋一整套中間件,可以實(shí)現(xiàn)系列間的代碼移植,同時(shí),HAL庫(kù)也支持通過(guò)STM32CubeMX可視化操作生成代碼。

      HAL庫(kù)是基于一個(gè)非限制性的BSD許可協(xié)議而發(fā)布的開(kāi)源代碼。ST制作的中間件堆棧帶有允許輕松重用的許可模式,只要是在ST公司的MCU芯片上使用,庫(kù)中的中間件(USB主機(jī)/設(shè)備庫(kù),STemWin)協(xié)議棧即被允許隨便修改,并可以反復(fù)使用。

      相較于標(biāo)準(zhǔn)外設(shè)庫(kù),HAL庫(kù)更加抽象化,可移植性更高,目前HAL庫(kù)已經(jīng)支持包括F7在內(nèi)的全部產(chǎn)品。但是,HAL庫(kù)較之其他開(kāi)發(fā)庫(kù)占用了更多的軟件資源,執(zhí)行代碼的所需要的時(shí)間更長(zhǎng),優(yōu)化程度較低。

      3.2 Low-Layer APIs(圖3)

      圖3 STM32Cube結(jié)構(gòu)

      Low-Layer庫(kù),簡(jiǎn)稱為L(zhǎng)L庫(kù),也是包含在STM32Cube中的庫(kù),就HAL庫(kù)而言,它更加底層,進(jìn)行直接寄存器操作。它可以與STM32CubeMX配合使用以生成STM32L0/F0/F3/L4的初始化代碼。

      相較于HAL庫(kù)的低效率,在對(duì)低性能(M0)或者低功耗(L系列)的芯片編程時(shí),LL庫(kù)可以作為HAL庫(kù)的一個(gè)很好的替代品進(jìn)行使用?;贚L庫(kù)的驅(qū)動(dòng)程序,涵蓋可指定參數(shù)的外圍設(shè)備初始化函數(shù),重置初始化數(shù)據(jù)結(jié)構(gòu)的函數(shù),內(nèi)聯(lián)函數(shù)可實(shí)現(xiàn)直接訪問(wèn)原子寄存器。同時(shí)LL庫(kù)既可以獨(dú)立運(yùn)行,又可以和HAL庫(kù)一起混合運(yùn)行,更為優(yōu)化的同時(shí)也更加適應(yīng)多種情況。

      盡管HAL庫(kù)和LL庫(kù)可以同時(shí)使用,但是LL不能與同一外圍設(shè)備實(shí)例的HAL一起使用。不能同時(shí)使用兩個(gè)API在同一IP上運(yùn)行并行進(jìn)程,但允許順序使用。

      4 各庫(kù)比較

      根據(jù)官方提供的數(shù)據(jù),獲得如表1的各開(kāi)發(fā)庫(kù)特征比較。

      表1 各開(kāi)發(fā)庫(kù)特征比較

      由表1可知,每個(gè)開(kāi)發(fā)庫(kù)都各有其長(zhǎng)處和局限性。STM32Snippets作為代碼段示例,MPU和存儲(chǔ)器的使用效率很高,因此它的優(yōu)化程度很高,但是它的可移植性、簡(jiǎn)易度等參數(shù)都很低,對(duì)開(kāi)發(fā)者的總體要求很高。不同的開(kāi)發(fā)庫(kù)的特點(diǎn)要求開(kāi)發(fā)者根據(jù)使用的STM32類型、開(kāi)發(fā)項(xiàng)目對(duì)效率、性能、可移植性的要求來(lái)選擇需要的庫(kù),從而實(shí)現(xiàn)更高效的開(kāi)發(fā)。

      結(jié)論:就目前STM32官方所提供的開(kāi)發(fā)庫(kù)而言,STM32Snippets代碼效率極高但是對(duì)開(kāi)發(fā)者對(duì)底層架構(gòu)和匯編語(yǔ)言的理解程度有較高的要求;標(biāo)準(zhǔn)固件庫(kù)硬件覆蓋完備,提供對(duì)寄存器操作的庫(kù)函數(shù),但是目前只有部分STM32系列提供了固件庫(kù),不同系列之間的移植有一定困難;作為STM32公司大力推廣的HAL庫(kù),覆蓋了全部的硬件外設(shè),可移植性極高,但是代碼優(yōu)化程度較低,占用軟件資源;LL庫(kù)接近底層,優(yōu)化程度高,但是不能在系列間移植,同時(shí)也需要開(kāi)發(fā)者對(duì)寄存器有一定的了解。

      猜你喜歡
      外設(shè)固件中間件
      RFID中間件技術(shù)及其應(yīng)用研究
      電子制作(2018年14期)2018-08-21 01:38:10
      基于VanConnect中間件的設(shè)計(jì)與開(kāi)發(fā)
      基于固件的遠(yuǎn)程身份認(rèn)證
      提取ROM固件中的APP
      中間件在高速公路領(lǐng)域的應(yīng)用
      一種通過(guò)USB接口的可靠固件升級(jí)技術(shù)
      Microchip推出具備雙ADC外設(shè)的全新器件,擴(kuò)展其低成本8位PIC?單片機(jī)產(chǎn)品線
      奧林巴斯XZ—2新固件升級(jí)
      一種支持智能環(huán)境構(gòu)建的中間件
      貼身呵護(hù) 必不可少的PSP外設(shè)
      宣恩县| 梓潼县| 铜川市| 泸州市| 巴中市| 湖口县| 阳山县| 霞浦县| 龙里县| 盐山县| 榕江县| 仪陇县| 余庆县| 泸定县| 呼图壁县| 水城县| 桂林市| 和田市| 股票| 仁布县| 临颍县| 广宁县| 大邑县| 海兴县| 冷水江市| 电白县| 竹山县| 安吉县| 长阳| 徐闻县| 镇安县| 天长市| 梁河县| 辽源市| 株洲县| 民权县| 五常市| 昌邑市| 湟中县| 靖宇县| 衡阳县|