LL庫快捷使用


早期開發STM32,大部分工程師都是基於標准庫進行開發,如果要換成LL庫,且需要復用以前代碼,該怎么辦呢?

 

下面就來給大家分享一下使用【SPL2LL轉換器】實現標准庫代碼遷移為LL庫的方法,以及相關內容。

 

1關於LL庫

LL庫,即STM32Cube Low-Layer,也叫Cube LL、Cube底層庫等。

 

開發STM32通常有四種“庫”,可以閱讀之前分享的文章《STM32四種庫對比:寄存器、標准外設庫、HAL、LL》進一步了解。

 

早在2014年,ST推出了STM32CubeMX這款工具,同步推出了對應的STM32Cube HAL庫。

 

但是,HAL存在一些問題:代碼量大、執行效率低等缺點。

 

因此,在2017年,ST推出了STM32Cube LL庫,目的就是為了解決的HAL庫的缺點,讓開發STM32的工程師有更多的選擇。

 

之前有工程師總結了寄存器、標准外設庫、HAL、LL四種庫的代碼性能:

(來源ST社區)

 

針對上圖(Flash、 SRAM 占用量和執行代碼的效率這三項指標對比測試)簡單講幾點:

1.ROM代碼和RAM占用量最小的屬於直接操作寄存器WED,對於ROM資源較小的芯片具有優勢;

 

2.執行效率最高的也屬於WED,但是代碼編輯、移植性和可讀寫都較差。(其實匯編語言比這還有優勢,一般沒有特殊要求,不建議使用該寄存器編程)

 

3.三項指標中,除了WED之外,SPL和Cube LL相近(不相上下),也相比Cube HAL就有優勢。所以,SPL和Cube LL是四種之中最佳選擇的兩種。

 

4.SPL和Cube LL各有特點:SPL庫成熟,可讀性(特別針對初學者)很好,查找問題也方便;Cube LL可以使用STM32CubeMX圖形化工具直接生產初始化代碼和工程,在這方便也具有明顯優勢。

 

2為什么要用LL庫?

上面講述了關於LL庫,以及其他幾種庫的內容,你會發現,幾種庫開發STM32各有各的優勢。

 

1.對於RAM和Flash這種資源比較少的STM32,除了用標准外設庫之外,LL庫就是一個很好的選擇。

 

2.使用LL庫配置的代碼,相對自己參考寄存器手冊配置的代碼,LL庫API接口更規范,更具有移植性。

 

3.有些芯片,沒有標准外設庫,只有早期推出的STM32才有標准外設庫,包含F0、 F1、 F2、 F3、 F4、 L1:

 

新出來的(像F7、L4、G0等)這些芯片只能使用目前的HAL、LL庫,或者你自己參考手冊配置寄存器(不是特殊情況,我不建議自己配寄存器)。

3利用SPL2LL工具轉換代碼

SPL2LL,即標准外設庫轉LL庫的轉換器工具。

 

SPL2LL主要特點:

  • 免費

  • 顯示源代碼遷移狀態

  • 生成C代碼,適用於IAR,Keil和GCC編譯器

  • 支持Windows、Linux和MacOS操作系統

 

網址:

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


網址包含相關文檔和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://www.activestate.com/products/perl/downloads/


如果覺得下載麻煩,可以在我網盤:

https://pan.baidu.com/s/1_R21S93V9hzlJ8ZL1D4dKA

提取碼: cp37
(包含SPL2LL和ActivePerl工具)
2.安裝

SPL2LL工具不需要安裝,直接點開即可使用,但前提需要安裝【ActivePerl】工具。

 

【ActivePerl】安裝比較簡單,一路Next下去即可。

 

3.使用SPL2LL

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

 

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

錯誤解決: "XML::Parser::Expat object version 2.46 does not match bootstrap parameter 2.44 at C:/Perl64/lib/DynaLoader.pm line 210."

翻譯:SPL2LL_Converter 返回錯誤“XML::Parser::Expat 對象版本 2.46 與 C:/Perl64/lib/DynaLoader.pm 行 210 處的引導程序參數 2.44 不匹配。”

解決辦法:下載 perl 5.24.4.1(舊版本)

http://www.kxdw.com/soft/27960.html

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

你會發現,即使被屏蔽的代碼也進行了SPL轉LL。
主要內容就分享到了,希望對你有幫助。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM