首頁 > 評測 > 不僅僅是低功耗——Nucleo-L432KC開發(fā)板評測

不僅僅是低功耗——Nucleo-L432KC開發(fā)板評測

Nucleo   ST   L432KC   低功耗   
  • 作者:劉昆磊
  • 來源:21ic
  • [導(dǎo)讀]
  • 橫跨多重電子應(yīng)用領(lǐng)域、全球領(lǐng)先的半導(dǎo)體供應(yīng)商意法半導(dǎo)體(ST)公司的STM32L4系列以其超低功耗的性能,領(lǐng)先于同類產(chǎn)品!如今又推出一款用經(jīng)濟(jì)實(shí)惠的STM32 Nucleo開發(fā)板——Nucleo-L432KC。

(2)同時也說明大家的開發(fā)環(huán)境和編譯器配置對處理器的性能發(fā)揮也是不可忽略的。

(3)最后還有我們能不能單單看Coremark代碼的跑分來就能說明處理器性能到底有多高???

四、開發(fā)

說到Nucleo-L432KC開發(fā),大家都應(yīng)該非常熟悉,意法半導(dǎo)體ST公司為STM32建立的完備的生態(tài)系統(tǒng),提供了包括低成本的Nucleo系列、Discovery探索系列和全功能系列等種類豐富的評估板幫助用戶熟悉STM32微控制器;同時支持多種主流的IDE,包括MDK、IAR、GCC-based IDEs等集成開發(fā)環(huán)境,另外還支持云端開發(fā)Mbed;在軟件方面,ST為STM32微控制器提供了功能強(qiáng)大的標(biāo)準(zhǔn)庫和HAL庫,以及最新推出的LL庫,并提供了大量的工程實(shí)例和開發(fā)模板,幫助工程師快速開發(fā)STM32的工程;此外還有ST還推出的STM32 CUBEMX配置工具可使用圖形化界面完成STM32微處理器的初始化配置工作。

ST公司推出的開發(fā)工具可見下圖。

41.jpg

圖4-1 STM32軟件生態(tài)系統(tǒng)

關(guān)于ST公司為STM32系列微控制器提供的各種庫可以見下圖。

42.jpg

圖4-2 STM32微控制器支持的庫

不同庫的特點(diǎn)可見下圖。

43.jpg

圖4-3不同庫的比較

通過上面的簡單對比,可以看出,目前ST公司推出的HAL庫功能最為齊全。目前ST正為用戶逐步退出LL庫,但目前還沒有覆蓋所有系列的MCU,不過也給出了相應(yīng)的時刻。

目前STM32L4系列的LL庫已經(jīng)推出了,應(yīng)該也是ST公司推出最早的LL庫,我們可以在大家下載到的HAL庫目錄中找到LL庫,如下圖。

44.jpg

圖4-4 STM32L4的HAL庫和LL庫

可能有人會疑問,有了強(qiáng)大的HAL庫了,還要推出LL庫,在兩種庫之間如何選擇使用呢?我認(rèn)為下圖應(yīng)該比較清楚清楚的說明了HAL和LL庫的關(guān)系和使用。

45.jpg

圖4-5庫的關(guān)系

HAL庫是目前功能最強(qiáng)鍵的庫,支持所有的STM32微控制器的片內(nèi)外設(shè)操作,可很方便的使用戶編寫的代碼從一個STM32系列移植到另一個系列,可以利用STM32 CubeMX軟件直接生成HAL庫的初始化代碼,非常適合于不同級別的用戶使用,但是使用HAL庫編寫的代碼執(zhí)行效率相對而言不夠高效,而且不夠靈活,在一些情況下不能滿足用戶多樣化的操作,可能這時候就需要用戶直接操作寄存器,但是HAL庫中添加直接操作寄存器的程序會使用戶程序可讀性變差。因此,ST公司開發(fā)了更加接近硬件的LL庫,該庫可直接訪問STM32微控制器的寄存器,編譯代碼更小、更加緊湊,而且可以很方便的和HAL庫共同使用,是對HAL庫的一個有效的補(bǔ)充,當(dāng)然,用戶也可以只是用LL庫或HAL庫,也可以同時使用HAL庫和LL庫。但是使用LL庫也會帶來一些問題,就是在不同的STM32系列微控制器之間的移植性較差,無法保證能夠在不同謝列之間移植成功,需要用戶更多的了解STM32的寄存器級的操作等等問題。

之前用慣了MDK和IAR兩個開發(fā)工具,今天來體驗(yàn)一下另一個免費(fèi)的開發(fā)工具System Workbench for STM32,該工具是基于Eclipse的免費(fèi)的跨平臺軟件,可運(yùn)行在windows、Linux和Mac系統(tǒng)上

46.jpg

圖4-6 System Workbench for STM32網(wǎng)站

接下來就來測試一下HAL庫和LL庫共同使用會有哪些好處,在這里我們選擇多數(shù)STM32單片機(jī)都有的內(nèi)部硬件CRC校驗(yàn)?zāi)K,該模塊在很多地方都使用,也比較簡單,我們在系統(tǒng)開始首先配置CRC_HandleTypeDef類型的結(jié)構(gòu)體變量,將其配置為CRC8,使用HAL_CRC_Init()函數(shù)對CRC模塊進(jìn)行初始化,然后使用HAL_CRC_Calculate()函數(shù)對數(shù)據(jù)進(jìn)行CRC8校驗(yàn)計(jì)算,假設(shè)之后我們想要進(jìn)行CRC16的校驗(yàn)該如何實(shí)現(xiàn)?在使用HAL庫時,需要重新修改CRC的結(jié)構(gòu)體變量,調(diào)用HAL_CRC_Init()函數(shù),這樣HAL_CRC_Init()內(nèi)部就有很多操作是重復(fù)的,這樣做回是程序效率降低,另一種方法是在HAL庫編程過程中直接插入寄存及的操作,這樣會使程序的可讀性變差,F(xiàn)在使用LL庫的LL_CRC_SetPolynomialSize()和LL_CRC_SetPolynomialCoef()就可以直接修改CRC模塊配置,而不用再次調(diào)用HAL_CRC_Init()函數(shù)。

 

圖4-7LL庫函數(shù)

測試環(huán)境為System Workbench for STM32+STM32 CubeMX+ STM32Cube_FW_L4_V1.5.0,大家自行搭建。

首先在STM32 CubeMX中新建Nucleo-L432KC開發(fā)板工程。

48.jpg

圖4-8新建CubeMX工程

啟用CRC模塊和UART2串口模塊。

49.jpg

圖4-9配置片內(nèi)外設(shè)

將STM32L432KC的時鐘配置為HIS,HCLK為80MHz。

  • 本文系21ic原創(chuàng),未經(jīng)許可禁止轉(zhuǎn)載!

網(wǎng)友評論

  • 聯(lián)系人:巧克力娃娃
  • 郵箱:board@21ic.com
  • 我要投稿
  • 歡迎入駐,開放投稿

熱門標(biāo)簽
項(xiàng)目外包 more+