日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于不同STM32库函数的代码性能对比

發布時間:2024/2/28 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于不同STM32库函数的代码性能对比 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

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界面下,做好各個外設的選擇及配置后,在Project\Project Setting\Advanced Settiing如下圖示界面上,你可以選擇要使用的庫類型:HAL/LL.



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

。。。\Drivers\STM32F4xx_HAL_Driver\Src



超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的基于不同STM32库函数的代码性能对比的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。