在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

基于STM32的三種庫函數代碼效率對比解析

STM32單片機 ? 來源:未知 ? 作者:佚名 ? 2017-11-06 06:49 ? 次閱讀

前言

ST已經推出了三種庫函數,以方便客戶快速開發STM32系列MCU。從最早的標準外設驅動庫,到后來的Cube HAL,再到Cube LL以及直接操作寄存器。這幾種庫的代碼效率到底如何呢?本文將針對這個問題進行粗略分析,并提供對比數據供大家參考。

問題分析

我們以GPIO翻轉、TIM PWM 輸出、ADCDMA 數據采集和DMA M2M這四個常用功能,通過不同的庫函數來實現相同功能,最終來對比各個庫函數的性能。四個工程代碼的內容簡述如下:

GPIO翻轉:切換GPIO的輸出電平,其中包含了系統時鐘初始化和GPIO翻轉的代碼。TIM PWM輸出:通過TIM1 的通道1輸出頻率是36KHz的PWM,循環修改其占空比從25%到50%,其中包含了系統時鐘初始化、TIM1的初始化和切換占空比的代碼。ADC DMA數據采集:通過ADC的模擬通道1,采集100次ADC的結果,并使用DMA傳輸到到用戶緩沖區,其中包含了系統時鐘初始化、ADC初始化和DMA的初始化的代碼。DMA M2M:使用DMA1的通道1,從Flash中傳輸100字節的數據到片內的SRAM中。其中包含了系統時鐘的初始化和DMA的初始化代碼。

主要對比三個參數Flash占用量SRAM占用量執行代碼的效率

Flash和SRAM的占用量可以通過查看IAR生成的*.map文件了解到。

在*.map文件中,會有如上圖的內容,其中的readonly code memory加上readonly data memory的和,就是Flash的占用量。而Readwrite data memory的大小即為SRAM的占用量。那么上圖所示的Flash占用量即為3204=3174+30,SRAM占用量即為1032。因用戶堆(Cstack)我們設置的為1024,所以真正應用代碼所占用的SRAM量為8=1032-1024.

代碼的運行效率部分,我們是通過IAR提供的內核運行周期數(CYCLECONTER)來計算的。在功能函數的開始處和結束處分別設置斷點,兩次內核運行周期數的差值,就是此處代碼的運行周期。

測試硬件選用了Nucleo-F302評估板。

軟件環境和庫函數詳情如下:

? IAR V7.60

? Optimizations Level High (Size)

? STM32CubeMX V4.17

? Create Project with Copy the necessary libraryfiles

? STM32CubeF3 V1.60

? STM32F30x_DSP_StdPeriph_Lib_V1.2.3

? STM32F3xx CMSIS V2.3.0

測試結果如下:[手機模式下片可點擊放大觀看]

總體來看,代碼效率與代碼的兼容性及可移植性成反比的規律是明顯的。Cube LL庫的效率明顯優于HAL庫的,幾乎和直接寫寄存器的效率相差無幾。HAL庫函數因為要顧及整個STM32系列間的代碼高度兼容與可移植性,代碼相對龐大。對于剛接觸STM32的人來說,非常易于上手做些基本的評估和驗證,入門快捷。LL庫的出現,是對HAL庫的有力補充。相比HAL庫用戶,LL庫用戶需要對MCU及相應外設有更為細致的了解。

目前,STM32cubeMX不但支持基于HAL庫的初始化文件的生成,也已支持基于LL庫的初始化文件及工程的生成,對于已經比較熟悉STM32應用或關注代碼效率的開發人員來說,可以優先考慮使用LL庫。

順便介紹在STM32CubeMx的圖形化界面下,如何選擇使用HAL庫還是LL庫生成初始化文件及相應工程。

在CubeMx界面下,做好各個外設的選擇及配置后,在ProjectProject SettingAdvanced Settiing如下圖示界面上,你可以選擇要使用的庫類型:HAL/LL.

另外,偶爾人詢問及LL庫在哪里,其實LL庫函數跟HAL庫函數是在同一目錄下。以STM32F4為例,你下載STM32CubeF4解壓后,在類似如下目錄可以看見HAL函數和LL函數庫文件。

。。。DriversSTM32F4xx_HAL_DriverSrc


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • STM32
    +關注

    關注

    2270

    文章

    10910

    瀏覽量

    356599
  • 庫函數
    +關注

    關注

    0

    文章

    177

    瀏覽量

    33990

原文標題:基于不同STM32庫函數的代碼性能對比

文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    解析STM32庫函數

    本帖最后由 zax1234 于 2012-10-29 22:50 編輯 解析STM32庫函數 意法半導體在推出 STM32 微控制器之初,也同時提供了一套完整細致的固件開發包,
    發表于 10-29 22:36

    解析STM32庫函數

    解析STM32庫函數
    發表于 05-12 09:35

    解析STM32庫函數(轉)

    解析STM32庫函數(轉) 獻給新手
    發表于 11-19 08:39

    關于STM32庫函數代碼性能對比

    前言ST 已經推出了三種庫函數,用以方便客戶快速開發 STM32 系列的 MCU。從最早的標準外設驅動庫,到后來的 Cube HAL , 再到 Cube LL,還有直接寫寄存器。這幾種庫的代碼
    發表于 07-27 14:07

    STM32三種boot模式介紹

    、示例驗證總結參考資料任務摘要請說明STM32三種Boot模式的差異,并在之前第11-12周“C語言各種變量的存儲地址”作業代碼基礎上,研究至少兩boot模式下,
    發表于 12-10 07:46

    STM32庫函數—點燈實驗_實驗

    概述: 從最簡單的“點燈”實驗入手,涉及到STM32的最基礎最簡單的操作。 實驗目的: 本實驗的目的很簡單,就是讓LED亮起來,并閃爍。 通過實驗了解STM32固件函數庫的使用方法。 本實驗用到以下4個
    發表于 02-22 15:45 ?11次下載

    STM32庫函數代碼自動生成器V1.2

    stm32庫函數代碼自動生成器是STM32學習的小工具。 stm32庫函數
    發表于 06-17 17:55 ?0次下載

    STM32庫函數代碼自動生成器正式版

    STM32庫函數代碼自動生成器正式版,感興趣的可以看看。
    發表于 07-13 16:55 ?0次下載

    STM32庫函數代碼自動生成器正式版

    STM32庫函數代碼自動生成器正式版 STM32庫函數代碼自動生成器正式版
    發表于 07-25 18:52 ?0次下載

    STM32庫函數代碼自動生成器正式版應用程序免費下載

    本文檔的主要內容詳細介紹的是STM32庫函數代碼自動生成器正式版應用程序免費下載。
    發表于 10-17 16:23 ?0次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>庫函數</b><b class='flag-5'>代碼</b>自動生成器正式版應用程序免費下載

    STM32庫函數代碼自動生成器V1.3應用程序免費下載

    本文檔的主要內容詳細介紹的是STM32庫函數代碼自動生成器V1.3應用程序免費下載。
    發表于 03-04 08:00 ?115次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>庫函數</b><b class='flag-5'>代碼</b>自動生成器V1.3應用程序免費下載

    STM32庫函數代碼自動生成器V1.2應用程序免費下載

    本文檔的主要內容詳細介紹的是STM32庫函數代碼自動生成器V1.2應用程序免費下載。
    發表于 10-24 17:30 ?50次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>庫函數</b><b class='flag-5'>代碼</b>自動生成器V1.2應用程序免費下載

    stm32下標準庫函數與HAL庫函數編程方式的差異

    stm32下標準庫函數與HAL庫函數編程方式的差異標準庫函數HAL庫函數標準庫函數與HAL
    發表于 12-09 14:21 ?15次下載
    <b class='flag-5'>stm32</b>下標準<b class='flag-5'>庫函數</b>與HAL<b class='flag-5'>庫函數</b>編程方式的差異

    基于標準庫函數與基于HAL庫函數stm32編程方式對比

    以實例程序(串口通信),分析基于標準庫函數與基于HAL庫函數stm32編程方式的差異一、基于標準庫函數stm32編程方式二、基于HAL
    發表于 12-28 19:09 ?30次下載
    基于標準<b class='flag-5'>庫函數</b>與基于HAL<b class='flag-5'>庫函數</b>的<b class='flag-5'>stm32</b>編程方式<b class='flag-5'>對比</b>

    STM32庫函數SystemInit()詳解

    STM32庫函數SystemInit()詳解
    的頭像 發表于 09-18 15:45 ?4136次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>庫函數</b>SystemInit()詳解
    主站蜘蛛池模板: 热99视频| 亚洲插插| 四虎影裤| 香蕉视频在线观看黄| 欧美成人全部免费观看1314色| 国产精品午夜在线观看| 2022天天操| 免费一级特黄欧美大片勹久久网| 国产成人亚洲综合a∨婷婷| 日本在线视频精品| 五月婷婷六月合| 色香欲综合成人免费视频| 日本大片黄色| 久久成人性色生活片| 欧美网站视频| 色偷偷91综合久久噜噜| 你懂的亚洲| 高颜值大长腿美女啪啪| 天天做天天爽天天谢| 夜夜爽夜夜爽| 久久夜靖品| 国产亚洲精品久久yy5099| 1024 在线观看视频免费| 在线a亚洲老鸭窝天堂新地址 | 久久这里只精品热在线8| 国产成人亚洲精品77| 天天操天天射天天操| 天天干天天射天天插| 午夜精| 久久国产乱子伦精品免费一| 小草影院亚洲私人影院| 狠狠色噜噜狠狠狠狠97| 色婷婷激婷婷深爱五月小说| 美国色综合| 加勒比综合| 午夜视频入口| 日本人六九视频69jzz免费| 爱爱帝国亚洲一区二区三区| 一个人看的www片免费高清视频| 一级毛片视频在线| 欧美日韩一区视频|