999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

STM32開發庫介紹與比較

2021-06-30 01:43:34蘇州大學工程學院鄒霄貝
電子世界 2021年11期
關鍵詞:標準

蘇州大學工程學院 鄒霄貝

目前,意法半導體公司就STM32的開發提供了數種開發工具,它們各有其優缺點和適用對象。本文將從使用方法、便攜性、工具的抽象程度以及它們的局限性等方面對STM32Snippets,標準外設庫以及基于STM32Cube的HAL APIs和Low-Layer APIs進行介紹,同時對它們的特點進行橫向的比較和分析。

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

因此,本文對目前SMT32官方提供的STM32Snippets、標準外設庫、HAL APIs和Low-Layer APIs的內容和特點進行了整合研究,并對其適用范圍進行了分析對比,從而獲得對開發庫的更全面的認識。

1 STM32Snippets

STM32Snippets是高度兼容的代碼示例的集合,可以直接應用于文檔和軟件包,這些示例通過進行直接寄存器訪問來減少代碼量,從而STM32的MCU的性能最大化利用。

由于STM32Snippets是操作于最底層的,因此需要開發者對寄存器進行直接操作,開發者需要對底層結構和寄存器比較了解,同時需要對匯編程序有較深的理解。同時,因為STM32Snippets具有能進行寄存器級別的訪問和調試的特點,在提供的開發庫中它的優化程度最高。

但是,STM32Snippets僅使用于STM32系列,采取這種方式進行項目的開發很難實現不同系列之間的移植。同時,STM32并不涵蓋例如USB之類的外設的代碼段示例,如果要進行一些復雜的外設應用,可能需要額外耗費很多的時間。此外,STM32Snippets僅可在STM32 L0和F0系列上使用。

2 標準外設庫

標準外設庫(即Standard Peripheral Libraries,簡稱SPL),是涵蓋STM32外設的C語言庫,標準外設庫將一些基本的寄存器操作封裝成庫函數使用,較HAL庫而言,依舊接近于寄存器操作。

標準外設庫目前幾乎是使用者最多的庫,在STM32Cube發布前,幾乎所有的STM32用戶均使用標準外設庫。標準外設庫覆蓋了所有的外圍設備,極大地方便了項目的開發,提高了編程效率。同時,標準固件庫還涵蓋許多復雜中間件的擴展,例如USB、TCPIP、Graphics等,進一步方便了使用者的開發。標準固件庫的結構清晰,在調用上比較簡單,且各系列的標準固件庫差別不大,在不同固件庫間進行程序移植時也比較簡單。

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

圖1 STM32F10xxx標準外設庫架構

但是,標準固件庫僅適用于特定的STM32系列,并且沒有通用的硬件抽象層應用程序接口,并不是每一個系列間都有統一的中間件庫,在系列間的移植性較差。同時,在選擇標準固件庫時也要注意,標準固件庫不支持從STM32 L0,L4和F7開始的STM32系列。

3 基于STM32Cube的開發庫(圖2)

圖2 STM32Cube功能示意圖

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

STM32Cube還提供了STM32CubeMX這個可視化配置軟件,通過STM32CubeMX,用戶可以通過圖形向導實現生成初始化C代碼,引腳多路復用,時鐘樹設置,外圍設備配置和中間件設置等。STM32Cube軟件包中包含調用標準化的API的可移植性硬件抽象層庫(即HAL庫)、輕量高效的底層API(即LL庫)等內容。

3.1 HAL APIs

HAL庫,即硬件抽象層,它涵蓋一整套中間件,可以實現系列間的代碼移植,同時,HAL庫也支持通過STM32CubeMX可視化操作生成代碼。

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

相較于標準外設庫,HAL庫更加抽象化,可移植性更高,目前HAL庫已經支持包括F7在內的全部產品。但是,HAL庫較之其他開發庫占用了更多的軟件資源,執行代碼的所需要的時間更長,優化程度較低。

3.2 Low-Layer APIs(圖3)

圖3 STM32Cube結構

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

相較于HAL庫的低效率,在對低性能(M0)或者低功耗(L系列)的芯片編程時,LL庫可以作為HAL庫的一個很好的替代品進行使用。基于LL庫的驅動程序,涵蓋可指定參數的外圍設備初始化函數,重置初始化數據結構的函數,內聯函數可實現直接訪問原子寄存器。同時LL庫既可以獨立運行,又可以和HAL庫一起混合運行,更為優化的同時也更加適應多種情況。

盡管HAL庫和LL庫可以同時使用,但是LL不能與同一外圍設備實例的HAL一起使用。不能同時使用兩個API在同一IP上運行并行進程,但允許順序使用。

4 各庫比較

根據官方提供的數據,獲得如表1的各開發庫特征比較。

表1 各開發庫特征比較

由表1可知,每個開發庫都各有其長處和局限性。STM32Snippets作為代碼段示例,MPU和存儲器的使用效率很高,因此它的優化程度很高,但是它的可移植性、簡易度等參數都很低,對開發者的總體要求很高。不同的開發庫的特點要求開發者根據使用的STM32類型、開發項目對效率、性能、可移植性的要求來選擇需要的庫,從而實現更高效的開發。

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

猜你喜歡
標準
2022 年3 月實施的工程建設標準
忠誠的標準
當代陜西(2019年8期)2019-05-09 02:22:48
標準匯編
上海建材(2019年1期)2019-04-25 06:30:48
美還是丑?
你可能還在被不靠譜的對比度標準忽悠
一家之言:新標準將解決快遞業“成長中的煩惱”
專用汽車(2016年4期)2016-03-01 04:13:43
2015年9月新到標準清單
標準觀察
標準觀察
標準觀察
主站蜘蛛池模板: 国产亚洲一区二区三区在线| 免费a级毛片18以上观看精品| 欧美在线中文字幕| 色婷婷国产精品视频| 亚洲日韩精品无码专区| 国产欧美精品一区aⅴ影院| 91精品久久久久久无码人妻| 免费观看国产小粉嫩喷水| 国产凹凸视频在线观看| yy6080理论大片一级久久| 鲁鲁鲁爽爽爽在线视频观看| 91福利在线观看视频| 国模私拍一区二区| 久久青草热| 青青草91视频| 成人毛片免费在线观看| 亚洲看片网| 超碰aⅴ人人做人人爽欧美| 99久久精品视香蕉蕉| 这里只有精品国产| 高清无码一本到东京热| 欧美狠狠干| 欧美人在线一区二区三区| 中文字幕在线看| 婷婷六月综合网| 中国国语毛片免费观看视频| 三级国产在线观看| 亚洲婷婷在线视频| 国产凹凸一区在线观看视频| 国产在线精品人成导航| 久久精品人人做人人| 91精品国产丝袜| 色综合中文字幕| 99re精彩视频| 国产精品欧美亚洲韩国日本不卡| 一级毛片免费观看久| 欧美精品v欧洲精品| 国产在线观看成人91| 97视频在线观看免费视频| 久久国语对白| 国产天天射| 97久久精品人人| 久久综合国产乱子免费| 97超碰精品成人国产| 日韩一区二区三免费高清| 夜夜高潮夜夜爽国产伦精品| 欧美精品aⅴ在线视频| 日本欧美精品| 国产电话自拍伊人| 精品一區二區久久久久久久網站| 白浆视频在线观看| 国外欧美一区另类中文字幕| 国产在线精品美女观看| 美女视频黄频a免费高清不卡| 久久精品无码中文字幕| 国产91在线|中文| 欧美午夜在线视频| 亚洲无码在线午夜电影| 在线观看国产一区二区三区99| 久青草网站| 亚洲AV人人澡人人双人| 亚洲 日韩 激情 无码 中出| 欧美日韩一区二区在线播放| 欧美成人看片一区二区三区 | 欧美性色综合网| a天堂视频| 欧美激情一区二区三区成人| 国产在线无码av完整版在线观看| 午夜激情婷婷| 亚洲第一黄片大全| 69视频国产| 国产精品浪潮Av| 国产成年无码AⅤ片在线| 亚洲国产精品不卡在线| 精品国产自在现线看久久| 最新国产精品鲁鲁免费视频| 欧美黄色a| 国产美女一级毛片| 91无码视频在线观看| 欧美国产在线一区| 成人午夜免费视频| 国产AV毛片|