Monday, September 4, 2017

STM32CubeMX初探

STM32CubeMX初探

STM32CubeMX是code generator(程式碼產生器),與Microchip code configurator一樣。目標是用圖形化方式規劃MCU的外部模組與內部Middlewares設定。我個人覺得使用STM32cubeMX可以讓整個開發更加"工程化",產生的專案會更有組織。

一、安裝與更新

安裝網址如下:http://www.st.com/en/development-tools/stm32cubemx.html

下載完成後,桌面會產生兩個icon,一個是STM32CubeMX,一個是STM32CubeUpdater。
開啟STM32CubeUpdater,選擇所需的STM32系列library,即可完成相依library建設。更新也是透過此工具。

二、基本使用(以STM32F469NI_Discovery為範例)

開啟STM32CubeMX,選擇New Project->選擇晶片或是開發版即可進入。如下圖畫面。

# pinout


左邊為周邊模組(peripheral)綠色為已經啟用。左邊為腳位設定(綠色為已規劃,橘色為開發版已經硬體連接的腳位但未啟用)。左鍵點選腳位可以開啟小選單選擇所需腳位定義。
透過上方tab進入進階規劃。

#Clock Configuration

這個tab將STM32的所有時序和PLL、prescaler列出整理成流。
幾乎所有設定都可以修改。後方藍色框框中可以直接鍵入所需Clock值,系統會幫你調整整個流。當然有硬體限制,STM32cubeMX會提醒你,當你出現錯誤設定會有警示。


#Configuration

這個tab將前面所開啟的周邊模組列出,每個都可點選以進階設定。更詳細的設定之後文章會介紹。

#power consumption calculator

這個tab可以幫助計算能源消耗,還可以計算各個環境下的情況(就是把datasheet後面的數據列出),不過無法計算開發版的能源消耗,僅限晶片本身。

# project Settings

點選上方menu->Project->Project Settings,開啟以下專案設定。
基本上就按照環境選了。不過這裏特別提一個選項,我覺得對後續開發很以幫助。
紅框中選項可以將周邊裝置的初始化函式(以MX_為前綴的函式)產生成獨立的.c/.h配對,避免全部Init函式都在main中,造成main function很肥大,而且當你有多個source檔(並非主要程序都集中在main.c)時,可以讓其他函式更方便引用這些初始程序。


#產生Project與報告

紅框中這兩個東西可以產生Project 與報告。

#結果與檔案樹(以ARM MDK keil為例)


User裡面是初始化函式和main.c。可以發現main.c中有一堆USER code begin和USER code end的註解,這些註解是希望user將自己的code加入其中,因為如果要重新使用STM32CubeMX產生code到同一專案時,可以確保user code不會被覆蓋。

Drivers/STM32F_4xx_HAL_Driver是STM官方在推的HAL函式庫,現在的主流,這部分引用都是由STM32CubeMX完成,其中若是想要自行開啟周邊模組,可以在這個資料夾中的stm32f4xx_hal_conf.h中解除註解或新增註解(外面檔案樹的Inc中)。若有新增模組需要手動將該周邊的HAL的.c新增進專案中。

# 小結

STM32CubeMX的有點是可以讓開發工程化,開發速度加快,可以用高層級的方式思考整個系統架構,而且不用去一直翻閱datasheet(最好還是要了解整個周邊的架構與使用)。

缺點是一些官方套件,例如:STemWin和BSP要自行新增進入專案中,有點可惜。

No comments:

Post a Comment

精選文章

使用Ardunio Atmega2560 連接 nRF24L01+

使用Ardunio Atmega2560 連接 nRF24L01+ 關於library 目前主流有 https://github.com/maniacbug/RF24 與 https://github.com/TMRh20/RF24 這兩個。 其中TMRh20大大做...