今天分享幾點(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)始。
-
寄存器
+關(guān)注
關(guān)注
31文章
5343瀏覽量
120348 -
STM32
+關(guān)注
關(guān)注
2270文章
10900瀏覽量
355981 -
spl
+關(guān)注
關(guān)注
0文章
20瀏覽量
16342 -
標(biāo)準(zhǔn)外設(shè)庫(kù)
+關(guān)注
關(guān)注
0文章
16瀏覽量
3549
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論