一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

基于STM32的三種庫(kù)函數(shù)代碼效率對(duì)比解析

STM32單片機(jī) ? 來(lái)源:未知 ? 作者:佚名 ? 2017-11-06 06:49 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

ST已經(jīng)推出了三種庫(kù)函數(shù),以方便客戶(hù)快速開(kāi)發(fā)STM32系列MCU。從最早的標(biāo)準(zhǔn)外設(shè)驅(qū)動(dòng)庫(kù),到后來(lái)的Cube HAL,再到Cube LL以及直接操作寄存器。這幾種庫(kù)的代碼效率到底如何呢?本文將針對(duì)這個(gè)問(wèn)題進(jìn)行粗略分析,并提供對(duì)比數(shù)據(jù)供大家參考。

問(wèn)題分析

我們以GPIO翻轉(zhuǎn)、TIM PWM 輸出、ADCDMA 數(shù)據(jù)采集和DMA M2M這四個(gè)常用功能,通過(guò)不同的庫(kù)函數(shù)來(lái)實(shí)現(xiàn)相同功能,最終來(lái)對(duì)比各個(gè)庫(kù)函數(shù)的性能。四個(gè)工程代碼的內(nèi)容簡(jiǎn)述如下:

GPIO翻轉(zhuǎn):切換GPIO的輸出電平,其中包含了系統(tǒng)時(shí)鐘初始化和GPIO翻轉(zhuǎn)的代碼。TIM PWM輸出:通過(guò)TIM1 的通道1輸出頻率是36KHz的PWM,循環(huán)修改其占空比從25%到50%,其中包含了系統(tǒng)時(shí)鐘初始化、TIM1的初始化和切換占空比的代碼。ADC DMA數(shù)據(jù)采集:通過(guò)ADC的模擬通道1,采集100次ADC的結(jié)果,并使用DMA傳輸?shù)降接脩?hù)緩沖區(qū),其中包含了系統(tǒng)時(shí)鐘初始化、ADC初始化和DMA的初始化的代碼。DMA M2M:使用DMA1的通道1,從Flash中傳輸100字節(jié)的數(shù)據(jù)到片內(nèi)的SRAM中。其中包含了系統(tǒng)時(shí)鐘的初始化和DMA的初始化代碼。

主要對(duì)比三個(gè)參數(shù):Flash占用量SRAM占用量執(zhí)行代碼的效率。

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

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

代碼的運(yùn)行效率部分,我們是通過(guò)IAR提供的內(nèi)核運(yùn)行周期數(shù)(CYCLECONTER)來(lái)計(jì)算的。在功能函數(shù)的開(kāi)始處和結(jié)束處分別設(shè)置斷點(diǎn),兩次內(nèi)核運(yùn)行周期數(shù)的差值,就是此處代碼的運(yùn)行周期。

測(cè)試硬件選用了Nucleo-F302評(píng)估板。

軟件環(huán)境和庫(kù)函數(shù)詳情如下:

? 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

測(cè)試結(jié)果如下:[手機(jī)模式下片可點(diǎn)擊放大觀(guān)看]

總體來(lái)看,代碼效率與代碼的兼容性及可移植性成反比的規(guī)律是明顯的。Cube LL庫(kù)的效率明顯優(yōu)于HAL庫(kù)的,幾乎和直接寫(xiě)寄存器的效率相差無(wú)幾。HAL庫(kù)函數(shù)因?yàn)橐櫦罢麄€(gè)STM32系列間的代碼高度兼容與可移植性,代碼相對(duì)龐大。對(duì)于剛接觸STM32的人來(lái)說(shuō),非常易于上手做些基本的評(píng)估和驗(yàn)證,入門(mén)快捷。LL庫(kù)的出現(xiàn),是對(duì)HAL庫(kù)的有力補(bǔ)充。相比HAL庫(kù)用戶(hù),LL庫(kù)用戶(hù)需要對(duì)MCU及相應(yīng)外設(shè)有更為細(xì)致的了解。

目前,STM32cubeMX不但支持基于HAL庫(kù)的初始化文件的生成,也已支持基于LL庫(kù)的初始化文件及工程的生成,對(duì)于已經(jīng)比較熟悉STM32應(yīng)用或關(guān)注代碼效率的開(kāi)發(fā)人員來(lái)說(shuō),可以?xún)?yōu)先考慮使用LL庫(kù)。

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

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

另外,偶爾人詢(xún)問(wèn)及LL庫(kù)在哪里,其實(shí)LL庫(kù)函數(shù)跟HAL庫(kù)函數(shù)是在同一目錄下。以STM32F4為例,你下載STM32CubeF4解壓后,在類(lèi)似如下目錄可以看見(jiàn)HAL函數(shù)和LL函數(shù)庫(kù)文件。

。。。DriversSTM32F4xx_HAL_DriverSrc


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

    關(guān)注

    2292

    文章

    11029

    瀏覽量

    364033
  • 庫(kù)函數(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    177

    瀏覽量

    34367

原文標(biāo)題:基于不同STM32庫(kù)函數(shù)的代碼性能對(duì)比

文章出處:【微信號(hào):STM32_STM8_MCU,微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    解析STM32庫(kù)函數(shù)

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

    解析STM32庫(kù)函數(shù)

    解析STM32庫(kù)函數(shù)
    發(fā)表于 05-12 09:35

    解析STM32庫(kù)函數(shù)(轉(zhuǎn))

    解析STM32庫(kù)函數(shù)(轉(zhuǎn)) 獻(xiàn)給新手
    發(fā)表于 11-19 08:39

    關(guān)于STM32庫(kù)函數(shù)代碼性能對(duì)比

    前言ST 已經(jīng)推出了三種庫(kù)函數(shù),用以方便客戶(hù)快速開(kāi)發(fā) STM32 系列的 MCU。從最早的標(biāo)準(zhǔn)外設(shè)驅(qū)動(dòng)庫(kù),到后來(lái)的 Cube HAL , 再到 Cube LL,還有直接寫(xiě)寄存器。這幾種庫(kù)的代碼
    發(fā)表于 07-27 14:07

    STM32三種boot模式介紹

    、示例驗(yàn)證總結(jié)參考資料任務(wù)摘要請(qǐng)說(shuō)明STM32三種Boot模式的差異,并在之前第11-12周“C語(yǔ)言各種變量的存儲(chǔ)地址”作業(yè)代碼基礎(chǔ)上,研究至少兩boot模式下,
    發(fā)表于 12-10 07:46

    STM32庫(kù)函數(shù)—點(diǎn)燈實(shí)驗(yàn)_實(shí)驗(yàn)

    概述: 從最簡(jiǎn)單的“點(diǎn)燈”實(shí)驗(yàn)入手,涉及到STM32的最基礎(chǔ)最簡(jiǎn)單的操作。 實(shí)驗(yàn)?zāi)康模? 本實(shí)驗(yàn)的目的很簡(jiǎn)單,就是讓LED亮起來(lái),并閃爍。 通過(guò)實(shí)驗(yàn)了解STM32固件函數(shù)庫(kù)的使用方法。 本實(shí)驗(yàn)用到以下4個(gè)
    發(fā)表于 02-22 15:45 ?11次下載

    STM32庫(kù)函數(shù)代碼自動(dòng)生成器V1.2

    stm32庫(kù)函數(shù)代碼自動(dòng)生成器是STM32學(xué)習(xí)的小工具。 stm32庫(kù)函數(shù)
    發(fā)表于 06-17 17:55 ?0次下載

    STM32庫(kù)函數(shù)代碼自動(dòng)生成器正式版

    STM32庫(kù)函數(shù)代碼自動(dòng)生成器正式版,感興趣的可以看看。
    發(fā)表于 07-13 16:55 ?0次下載

    STM32庫(kù)函數(shù)代碼自動(dòng)生成器正式版

    STM32庫(kù)函數(shù)代碼自動(dòng)生成器正式版 STM32庫(kù)函數(shù)代碼自動(dòng)生成器正式版
    發(fā)表于 07-25 18:52 ?0次下載

    STM32庫(kù)函數(shù)代碼自動(dòng)生成器正式版應(yīng)用程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是STM32庫(kù)函數(shù)代碼自動(dòng)生成器正式版應(yīng)用程序免費(fèi)下載。
    發(fā)表于 10-17 16:23 ?0次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>庫(kù)函數(shù)</b><b class='flag-5'>代碼</b>自動(dòng)生成器正式版應(yīng)用程序免費(fèi)下載

    STM32庫(kù)函數(shù)代碼自動(dòng)生成器V1.3應(yīng)用程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是STM32庫(kù)函數(shù)代碼自動(dòng)生成器V1.3應(yīng)用程序免費(fèi)下載。
    發(fā)表于 03-04 08:00 ?121次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>庫(kù)函數(shù)</b><b class='flag-5'>代碼</b>自動(dòng)生成器V1.3應(yīng)用程序免費(fèi)下載

    stm32下標(biāo)準(zhǔn)庫(kù)函數(shù)與HAL庫(kù)函數(shù)編程方式的差異

    stm32下標(biāo)準(zhǔn)庫(kù)函數(shù)與HAL庫(kù)函數(shù)編程方式的差異標(biāo)準(zhǔn)庫(kù)函數(shù)HAL庫(kù)函數(shù)標(biāo)準(zhǔn)庫(kù)函數(shù)與HAL
    發(fā)表于 12-09 14:21 ?15次下載
    <b class='flag-5'>stm32</b>下標(biāo)準(zhǔn)<b class='flag-5'>庫(kù)函數(shù)</b>與HAL<b class='flag-5'>庫(kù)函數(shù)</b>編程方式的差異

    基于標(biāo)準(zhǔn)庫(kù)函數(shù)與基于HAL庫(kù)函數(shù)stm32編程方式對(duì)比

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

    STM32F103使用(3.5)庫(kù)函數(shù)新建工程

    低。但是因?yàn)?b class='flag-5'>庫(kù)函數(shù)函數(shù)調(diào)用嵌套層次比較多,執(zhí)行效率上是沒(méi)有寄存器高,沒(méi)有寄存器代碼那么簡(jiǎn)潔。初學(xué)還是推薦使用寄存器方式,針對(duì)不同廠(chǎng)家的CPU來(lái)講更加通用一點(diǎn),可以更加清楚的了解寄存器底
    的頭像 發(fā)表于 05-28 14:00 ?4051次閱讀
    <b class='flag-5'>STM32</b>F103使用(3.5)<b class='flag-5'>庫(kù)函數(shù)</b>新建工程

    STM32庫(kù)函數(shù)SystemInit()詳解

    STM32庫(kù)函數(shù)SystemInit()詳解
    的頭像 發(fā)表于 09-18 15:45 ?5083次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>庫(kù)函數(shù)</b>SystemInit()詳解