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

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

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

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

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

四、開發(fā)

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

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

41.jpg

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

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

42.jpg

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

不同庫的特點可見下圖。

43.jpg

圖4-3不同庫的比較

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

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

44.jpg

圖4-4 STM32L4的HAL庫和LL庫

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

45.jpg

圖4-5庫的關系

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

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

46.jpg

圖4-6 System Workbench for STM32網站

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

 

圖4-7LL庫函數

測試環(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配置片內外設

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

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

網友評論