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

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

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

STM32標(biāo)準(zhǔn)外設(shè)庫(kù)SPL轉(zhuǎn)換成 Cube LL

黃工的嵌入式技術(shù)圈 ? 來(lái)源:黃工的嵌入式技術(shù)圈 ? 2020-03-08 12:08 ? 次閱讀

今天分享幾點(diǎn)內(nèi)容:

1.介紹ST推出的三種庫(kù);

2.直接操作寄存器及三種ST庫(kù)的代碼性能對(duì)比;

3.STM32CubeMX直接生成Cube LL庫(kù)函數(shù)的方法;

4.STM32標(biāo)準(zhǔn)外設(shè)庫(kù)SPL轉(zhuǎn)換成Cube LL的方法;

1介紹ST推出的三種庫(kù)

1.標(biāo)準(zhǔn)外設(shè)庫(kù):Standard Peripheral Libraries,簡(jiǎn)寫SPL.

2.Cube硬件抽象層庫(kù):STM32Cube Hardware Abstraction Layer,簡(jiǎn)寫Cube HAL.

3.Cube底層庫(kù):STM32Cube Low-Layer,簡(jiǎn)寫Cube LL.

開(kāi)發(fā)STM32常見(jiàn)的除了直接讀寫(操作)寄存器之外,就是使用ST推出的庫(kù)函數(shù)進(jìn)行開(kāi)發(fā)。

這三種庫(kù)中最早推出的是標(biāo)準(zhǔn)外設(shè)庫(kù)SPL,所以在推出STM32Cube HAL之前的大部分攻城獅都喜歡使用標(biāo)準(zhǔn)外設(shè)庫(kù)對(duì)STM32進(jìn)行開(kāi)發(fā)。

隨著STM32Cube HAL的推出,很多攻城獅(包括以前的,和新初學(xué)的)就開(kāi)始著手轉(zhuǎn)入使用STM32Cube HAL進(jìn)行開(kāi)發(fā),原因在于可以使用STM32CubeMX這套圖形化的工程直接生成初始化代碼和相應(yīng)工程文件,極大地方便和節(jié)省了攻城獅的時(shí)間。

但是,使用STM32Cube HAL開(kāi)發(fā),很多攻城獅發(fā)現(xiàn)一個(gè)問(wèn)題,使用STM32Cube HAL開(kāi)發(fā)生成的代碼量比標(biāo)準(zhǔn)外設(shè)庫(kù)的要大,而且執(zhí)行的效率也不夠高。所以,ST團(tuán)隊(duì)就著手開(kāi)發(fā)了一套技能滿足標(biāo)準(zhǔn)外設(shè)庫(kù)優(yōu)點(diǎn),又能滿足STM32Cube HAL優(yōu)點(diǎn)的庫(kù),那就是STM32Cube LL。

STM32Cube LL是2017年推出的,目前還處于研發(fā)初期。因此,網(wǎng)上有許多開(kāi)發(fā)者發(fā)現(xiàn)了一些問(wèn)題,不過(guò)相信隨著時(shí)間的推移,這些bug都會(huì)得到解決。

2直接操作寄存器及三種ST庫(kù)的代碼性能對(duì)比

Cube LL庫(kù)的推出,就是因?yàn)榘l(fā)現(xiàn)了【標(biāo)準(zhǔn)外設(shè)庫(kù)】及【Cube HAL庫(kù)】存在的不足才推出。

因此,本節(jié)讓大家了解一下直接操作寄存器、標(biāo)準(zhǔn)外設(shè)庫(kù)SPL、Cube HAL庫(kù)和Cube LL庫(kù)這四種方法的代碼性能對(duì)比。

這個(gè)測(cè)試結(jié)果來(lái)自ST社區(qū),在網(wǎng)上搜索Cube LL都能找到,結(jié)果已經(jīng)很明顯對(duì)比出來(lái)這四種方式的差異(不要說(shuō)你看不來(lái)這個(gè)結(jié)果哦)。

針對(duì)上圖(GPIO翻轉(zhuǎn)、TIM PWM 輸出、ADC DMA 數(shù)據(jù)采集和DMA M2M四組數(shù)據(jù),分別對(duì)Flash 占用量、 SRAM 占用量和執(zhí)行代碼的效率這三項(xiàng)指標(biāo)對(duì)比測(cè)試),我這里簡(jiǎn)單講幾點(diǎn):

1.ROM代碼和RAM占用量最小的屬于直接操作寄存器WED,對(duì)于ROM資源較小的芯片具有優(yōu)勢(shì);

2.執(zhí)行效率最高的也屬于WED,但是代碼編輯、移植性和可讀寫都較差。一般不建議使用該方式(其實(shí)匯編語(yǔ)言比這還有優(yōu)勢(shì))

3.三項(xiàng)指標(biāo)中,除了WED之外,SPL和Cube LL相近(不相上下),也相比Cube HAL就有優(yōu)勢(shì)。所以,SPL和Cube LL是四種之中最佳選擇的兩種。

4.SPL和Cube LL各有特點(diǎn):SPL庫(kù)成熟,可讀性(特別針對(duì)初學(xué)者)很好,查找問(wèn)題也方便;Cube LL可以使用STM32CubeMX圖形化工具直接生產(chǎn)初始化代碼和工程,在這方便也具有明顯優(yōu)勢(shì)。

3STM32CubeMX直接生成Cube LL庫(kù)函數(shù)的方法

這一節(jié)內(nèi)容簡(jiǎn)述一下,主要就是你要學(xué)會(huì)使用STM32CubeMX這個(gè)圖形化工具。

我們可以使用STM32CubeMX這個(gè)工具生產(chǎn)Cube HAL和Cube LL兩種不同庫(kù)的代碼工程,就是需要通過(guò)配置,選擇不同的庫(kù)。

在你相關(guān)配置都就緒,準(zhǔn)備生成代碼工程之前Project -> Settings ->Advanced Settings選擇LL即可(默認(rèn)是HAL)。

零基礎(chǔ)的朋友可以參看下面文字:

1.STM32CubeMX介紹、下載與安裝

2.STM32CubeMX使用方法及功能介紹

3.STM32CubeMX新建工程+基本IO配置過(guò)程

4STM32標(biāo)準(zhǔn)外設(shè)庫(kù)SPL轉(zhuǎn)換成Cube LL的方法

這ST為了使更多攻城獅使用Cube LL庫(kù),專門做了一個(gè)兼容個(gè)轉(zhuǎn)換工具,就是【SPL2LL_Converter】,它可以將你之前標(biāo)準(zhǔn)庫(kù)的代碼轉(zhuǎn)換成Cube LL庫(kù)的代碼,方法比較簡(jiǎn)單。

SPL2LL-Converter網(wǎng)址:

https://www.stmicroelectronics.com.cn/zh/development-tools/spl2ll-converter.html

在上面網(wǎng)址就可找到相關(guān)文檔和下載轉(zhuǎn)換工具。但需要提前安裝一個(gè)叫【ActivePerl】的工具。

activeperl下載地址:

https://www.activestate.com/activeperl/downloads

嫌麻煩的朋友可以到我的百度網(wǎng)盤下載:

http://pan.baidu.com/s/1dFMFwHF

提示:微信公眾號(hào)不支持外鏈接(復(fù)制鏈接到瀏覽器下載),網(wǎng)盤后期有可能失效。

轉(zhuǎn)換的操作比較簡(jiǎn)單,打開(kāi)轉(zhuǎn)換工具,找到需要轉(zhuǎn)換的源代碼文件夾,設(shè)置轉(zhuǎn)換后文件夾,點(diǎn)擊“Migrate”即可開(kāi)始。

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

    關(guān)注

    31

    文章

    5343

    瀏覽量

    120348
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10900

    瀏覽量

    355981
  • spl
    spl
    +關(guān)注

    關(guān)注

    0

    文章

    20

    瀏覽量

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

    關(guān)注

    0

    文章

    16

    瀏覽量

    3549
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    AMC1303M2520所輸出的信號(hào)經(jīng)過(guò)STM32的DFSDM外設(shè)進(jìn)行采集濾波后,得出的數(shù)據(jù)轉(zhuǎn)換成波形與實(shí)際波形不一致怎么解決?

    的DFSDM外設(shè)進(jìn)行采集濾波后,所得出的數(shù)據(jù)轉(zhuǎn)換成波形與實(shí)際波形完全天壤之別,所以在此進(jìn)行求助。 1.第一個(gè)問(wèn)題是,我們計(jì)劃用AMC1303M2520來(lái)采集40KHZ的正弦信號(hào)的方案是否是可行的呢? 2.第二個(gè)問(wèn)題是,我們目前在DFSDM中配置的是Sinc2階,25過(guò)采樣
    發(fā)表于 12-06 06:05

    labview怎么將mdb文件轉(zhuǎn)換成xlsx

    labview怎么將mdb文件轉(zhuǎn)換成(導(dǎo)出)xlsx
    發(fā)表于 07-11 14:38

    STM32F10x標(biāo)準(zhǔn)外設(shè)庫(kù)參考手冊(cè)

    STM32F10x標(biāo)準(zhǔn)外設(shè)庫(kù)參考手冊(cè)
    發(fā)表于 06-24 09:26 ?11次下載

    esp32中如何將16進(jìn)制的數(shù)據(jù)轉(zhuǎn)換成字符串?

    想將16進(jìn)制的數(shù)原數(shù)轉(zhuǎn)換成字符串,但不知道怎么轉(zhuǎn)換??百度查的轉(zhuǎn)不成功
    發(fā)表于 06-19 07:37

    如何將wav.h文件轉(zhuǎn)換成pcm采樣文件?

    需要將 wav.h 文件轉(zhuǎn)換成 pcm 采樣文件,以了解混音器的工作原理,并通過(guò) pwm 接口檢查音調(diào)聲音(例如,需要將 800hz、1khz、2khz 的音調(diào)聲音轉(zhuǎn)換成 pcm 采樣文件,以檢查音調(diào)聲音)。 如何轉(zhuǎn)換 wav.
    發(fā)表于 06-03 06:04

    STM32Cube庫(kù)和standard peripheral library有什么區(qū)別?

    STM32Cube庫(kù)和standard peripheral library有什么區(qū)別
    發(fā)表于 05-16 06:52

    請(qǐng)問(wèn)STM32cube庫(kù)與3.5的外設(shè)庫(kù)有區(qū)別嗎?

    請(qǐng)問(wèn)STM32cube庫(kù)與3.5的外設(shè)庫(kù)有區(qū)別嗎
    發(fā)表于 05-15 06:57

    stm32使用SD卡保存HEX升級(jí)芯片內(nèi)部flash,需要轉(zhuǎn)換成BIN文件嗎?

    請(qǐng)問(wèn)下:stm32 自己使用SD卡保存HEX升級(jí)芯片內(nèi)部flash,需要轉(zhuǎn)換成BIN文件嗎?
    發(fā)表于 05-09 06:15

    stm32f303采用LL庫(kù),4個(gè)ADC連續(xù)多通道掃描,應(yīng)該如何設(shè)置DMA?

    stm32f303,采用LL庫(kù),4個(gè)ADC連續(xù)多通道掃描,應(yīng)該如何設(shè)置DMA?ADC轉(zhuǎn)換完DMA傳輸后,中斷處理函數(shù)是哪個(gè)?
    發(fā)表于 04-30 07:06

    STM32F0的SPL庫(kù)能在STM32G0上用嗎?

    原來(lái)用的STM32F0系列,使用的V3.5.0的標(biāo)準(zhǔn)外設(shè)庫(kù)。現(xiàn)在改用STM32G0系列,發(fā)現(xiàn)官網(wǎng)提供的固件
    發(fā)表于 04-08 08:29

    STM32CubeIDE中編譯X-CUBE-SBSFU的G0例程失敗的原因?

    的WorkPlace,發(fā)現(xiàn)原先的工程是基于SW4STM32的,CubeIDE可以將其轉(zhuǎn)換成CubeIDE的工程(二者基于eplicse開(kāi)發(fā)),且轉(zhuǎn)換過(guò)程無(wú)問(wèn)題?! ∥议_(kāi)始編譯
    發(fā)表于 04-07 07:09

    STM32F1的LL庫(kù),RTC怎么不能設(shè)置日期?

    STM32F1的LL庫(kù),RTC 怎么不能設(shè)置日期,只能設(shè)置時(shí)間。
    發(fā)表于 03-29 07:02

    STM32L471RE同樣的硬件使用LL庫(kù)和HAL編譯的工程運(yùn)行功耗不一樣?為什么?

    項(xiàng)目在使用STM32L471RE開(kāi)發(fā),涉及到低功耗的處理。在測(cè)試過(guò)程中發(fā)現(xiàn)同樣的硬件結(jié)構(gòu)(PCB上僅焊接mcu的最小系統(tǒng)),使用LL庫(kù)和HAL庫(kù)生產(chǎn)的兩個(gè)工程運(yùn)行功耗不一樣,工程配置時(shí)
    發(fā)表于 03-21 06:17

    如何把0-2MA的電流成比例的轉(zhuǎn)換成4-20MA?

    怎樣實(shí)現(xiàn)把0-2MA的電流成比例的轉(zhuǎn)換成4-20MA?有沒(méi)有獨(dú)立的電流轉(zhuǎn)換芯片能完成這一要求?望高手指點(diǎn),謝謝!
    發(fā)表于 02-22 07:39

    基于LL庫(kù)實(shí)現(xiàn)STM32U5 LPTIM功能

    有人打算使用STM32U5系列片內(nèi)LPTIM做低功耗模式喚醒?;?b class='flag-5'>STM32 LL庫(kù)組織代碼,折騰幾天后似乎連中斷都進(jìn)不了,想找找是否有現(xiàn)存LL
    的頭像 發(fā)表于 01-07 14:12 ?1567次閱讀
    基于<b class='flag-5'>LL</b><b class='flag-5'>庫(kù)</b>實(shí)現(xiàn)<b class='flag-5'>STM32</b>U5 LPTIM功能