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

針對上圖(Flash、 SRAM 占用量和執(zhí)行代碼的效率這三項指標對比測試)簡單講幾點:
1.ROM代碼和RAM占用量最小的屬于直接操作寄存器WED,對于ROM資源較小的芯片具有優(yōu)勢;
2.執(zhí)行效率最高的也屬于WED,但是代碼編輯、移植性和可讀寫都較差。(其實匯編語言比這還有優(yōu)勢,一般沒有特殊要求,不建議使用該寄存器編程)
3.三項指標中,除了WED之外,SPL和Cube LL相近(不相上下),也相比Cube HAL就有優(yōu)勢。所以,SPL和Cube LL是四種之中最佳選擇的兩種。
4.SPL和Cube LL各有特點:SPL庫成熟,可讀性(特別針對初學者)很好,查找問題也方便;Cube LL可以使用STM32CubeMX圖形化工具直接生產初始化代碼和工程,在這方便也具有明顯優(yōu)勢。
2為什么要用LL庫?
上面講述了關于LL庫,以及其他幾種庫的內容,你會發(fā)現,幾種庫開發(fā)STM32各有各的優(yōu)勢。
1.對于RAM和Flash這種資源比較少的STM32,除了用標準外設庫之外,LL庫就是一個很好的選擇。
2.使用LL庫配置的代碼,相對自己參考寄存器手冊配置的代碼,LL庫API接口更規(guī)范,更具有移植性。
3.有些芯片,沒有標準外設庫,只有早期推出的STM32才有標準外設庫,包含F0、 F1、 F2、 F3、 F4、 L1:

新出來的(像F7、L4、G0等)這些芯片只能使用目前的HAL、LL庫,或者你自己參考手冊配置寄存器(不是特殊情況,我不建議自己配寄存器)。
3利用SPL2LL工具轉換代碼
SPL2LL,即標準外設庫轉LL庫的轉換器工具。
SPL2LL主要特點:
免費
顯示源代碼遷移狀態(tài)
生成C代碼,適用于IAR,Keil和GCC編譯器
網址包含相關文檔和SPL2LL工具。
1.ActivePerl下載安裝 在使用SPL2LL工具之前,需要安裝【ActivePerl】這個工具,不然會提示錯誤:
Error : cannot find perl, please verify that you have perl (》5.24.1) installed and added to path
Then restart the application

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




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

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

這里需要耐心等待,比較費時間,原理就是遍歷你源碼中標準庫,然后轉換成LL庫。
4.轉化代碼前后對比

你會發(fā)現,即使被屏蔽的代碼也進行了SPL轉LL。
編輯:lyn
-
轉換器
+關注
關注
27文章
9451瀏覽量
157040 -
STM32
+關注
關注
2313文章
11196瀏覽量
374764 -
代碼
+關注
關注
30文章
4977瀏覽量
74420
發(fā)布評論請先 登錄
深入剖析MC9S08LL16系列MCU:特性、參數與應用指南
立訊精密DP80LL系列線纜通過VESA官方認證
深度解析SPL階段A/B分區(qū)啟動:spl_ab.c代碼全拆解
1608 2.4G&5GHz 雙工器 DPX1608LL80R2455A 技術解析
1608 2.4G&5GHz 雙工器 DPX1608LL80R2455A 技術解析
探索Type 2LL:集Wi-Fi、藍牙和802.15.4于一體的三無線電模塊
微庫與標準C庫的區(qū)別
STM32已經用標準庫寫好的代碼,怎么導入RT THREAD?
怎么用LL命令讀取SPI?
為什么要選擇采用TO-LL封裝的意法半導體SiC MOSFET
基于STM32 HAL庫與標準庫的esp8266接入機智云方案(二)
SPL2LL轉換器實現標準庫代碼遷移為LL庫的方法與內容
評論