早期開(kāi)發(fā)STM32,大部分工程師都是基于標(biāo)準(zhǔn)庫(kù)進(jìn)行開(kāi)發(fā),如果要換成LL庫(kù),且需要復(fù)用以前代碼,該怎么辦呢?
下面就來(lái)給大家分享一下使用【SPL2LL轉(zhuǎn)換器】實(shí)現(xiàn)標(biāo)準(zhǔn)庫(kù)代碼遷移為L(zhǎng)L庫(kù)的方法,以及相關(guān)內(nèi)容。
1關(guān)于LL庫(kù)
LL庫(kù),即STM32Cube Low-Layer,也叫Cube LL、Cube底層庫(kù)等。
開(kāi)發(fā)STM32通常有四種“庫(kù)”,可以閱讀之前分享的文章進(jìn)一步了解。
早在2014年,ST推出了STM32CubeMX這款工具,同步推出了對(duì)應(yīng)的STM32Cube HAL庫(kù)。
但是,HAL存在一些問(wèn)題:代碼量大、執(zhí)行效率低等缺點(diǎn)。
因此,在2017年,ST推出了STM32Cube LL庫(kù),目的就是為了解決的HAL庫(kù)的缺點(diǎn),讓開(kāi)發(fā)STM32的工程師有更多的選擇。
之前有工程師總結(jié)了的代碼性能:

針對(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,但是代碼編輯、移植性和可讀寫(xiě)都較差。(其實(shí)匯編語(yǔ)言比這還有優(yōu)勢(shì),一般沒(méi)有特殊要求,不建議使用該寄存器編程)
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ì)。
2為什么要用LL庫(kù)?
上面講述了關(guān)于LL庫(kù),以及其他幾種庫(kù)的內(nèi)容,你會(huì)發(fā)現(xiàn),幾種庫(kù)開(kāi)發(fā)STM32各有各的優(yōu)勢(shì)。
1.對(duì)于RAM和Flash這種資源比較少的STM32,除了用標(biāo)準(zhǔn)外設(shè)庫(kù)之外,LL庫(kù)就是一個(gè)很好的選擇。
2.使用LL庫(kù)配置的代碼,相對(duì)自己參考寄存器手冊(cè)配置的代碼,LL庫(kù)API接口更規(guī)范,更具有移植性。
3.有些芯片,沒(méi)有標(biāo)準(zhǔn)外設(shè)庫(kù),只有早期推出的STM32才有標(biāo)準(zhǔn)外設(shè)庫(kù),包含F(xiàn)0、 F1、 F2、 F3、 F4、 L1:

新出來(lái)的(像F7、L4、G0等)這些芯片只能使用目前的HAL、LL庫(kù),或者你自己參考手冊(cè)配置寄存器(不是特殊情況,我不建議自己配寄存器)。
3利用SPL2LL工具轉(zhuǎn)換代碼
SPL2LL,即標(biāo)準(zhǔn)外設(shè)庫(kù)轉(zhuǎn)LL庫(kù)的轉(zhuǎn)換器工具。
SPL2LL主要特點(diǎn):
免費(fèi)
顯示源代碼遷移狀態(tài)
生成C代碼,適用于IAR,Keil和GCC編譯器
支持Windows、Linux和MacOS操作系統(tǒng)
網(wǎng)址包含相關(guān)文檔和SPL2LL工具。
1.ActivePerl下載安裝 在使用SPL2LL工具之前,需要安裝【ActivePerl】這個(gè)工具,不然會(huì)提示錯(cuò)誤:
Error : cannot find perl, please verify that you have perl (》5.24.1) installed and added to path
Then restart the application

如果覺(jué)得下載麻煩,可以在我網(wǎng)盤(pán):
https://pan.baidu.com/s/1_R21S93V9hzlJ8ZL1D4dKA
提取碼: cp37
(包含SPL2LL和ActivePerl工具)
2.安裝
SPL2LL工具不需要安裝,直接點(diǎn)開(kāi)即可使用,但前提需要安裝【ActivePerl】工具。
【ActivePerl】安裝比較簡(jiǎn)單,一路Next下去即可。




3.使用SPL2LL
SPL2LL使用方法很簡(jiǎn)單,選在源和目標(biāo)的型號(hào)、路徑,然后執(zhí)行即可。

選擇好之后,點(diǎn)擊“Migrate”即可執(zhí)行轉(zhuǎn)換。

這里需要耐心等待,比較費(fèi)時(shí)間,原理就是遍歷你源碼中標(biāo)準(zhǔn)庫(kù),然后轉(zhuǎn)換成LL庫(kù)。
4.轉(zhuǎn)化代碼前后對(duì)比

你會(huì)發(fā)現(xiàn),即使被屏蔽的代碼也進(jìn)行了SPL轉(zhuǎn)LL。
編輯:lyn
-
轉(zhuǎn)換器
+關(guān)注
關(guān)注
27文章
9314瀏覽量
154800 -
STM32
+關(guān)注
關(guān)注
2302文章
11111瀏覽量
370387 -
代碼
+關(guān)注
關(guān)注
30文章
4932瀏覽量
72841
發(fā)布評(píng)論請(qǐng)先 登錄
STM32已經(jīng)用標(biāo)準(zhǔn)庫(kù)寫(xiě)好的代碼,怎么導(dǎo)入RT THREAD?
怎么用LL命令讀取SPI?
為什么要選擇采用TO-LL封裝的意法半導(dǎo)體SiC MOSFET
基于STM32 HAL庫(kù)與標(biāo)準(zhǔn)庫(kù)的esp8266接入機(jī)智云方案(二)
STM32已經(jīng)用標(biāo)準(zhǔn)庫(kù)寫(xiě)好的代碼,怎么導(dǎo)入RT THREAD?
18個(gè)常用的強(qiáng)化學(xué)習(xí)算法整理:從基礎(chǔ)方法到高級(jí)模型的理論技術(shù)與代碼實(shí)現(xiàn)
如何采集雷達(dá)流量計(jì)(SCJ-LL21)數(shù)據(jù)
請(qǐng)問(wèn)STM32G431 flash和can為什么沒(méi)有LL庫(kù)?
AKI跨語(yǔ)言調(diào)用庫(kù)神助攻C/C++代碼遷移至HarmonyOS NEXT
ODX診斷數(shù)據(jù)庫(kù)轉(zhuǎn)換工具 - DDC

SPL2LL轉(zhuǎn)換器實(shí)現(xiàn)標(biāo)準(zhǔn)庫(kù)代碼遷移為L(zhǎng)L庫(kù)的方法與內(nèi)容
評(píng)論