1,概覽
STM32CubeMX是STM32Cube工具家族中的一員,從MCU/MPU選型,引腳配置,系統(tǒng)時鐘以及外設(shè)時鐘設(shè)置,到外設(shè)參數(shù)配置,中間件參數(shù)配置,它給STM32開發(fā)者們提供了一種簡單,方便,并且直觀的方式來完成這些工作。所有的配置完成后,它還可以根據(jù)所選的IDE生成對應(yīng)的工程和初始化C代碼。除此以外,STM32CubeMX還提供了功耗計算工具,可作為產(chǎn)品設(shè)計中功耗評估的參考。
2,特性
- 內(nèi)嵌ST MCU Finder,直觀的STM32 MCU&MPU選型,Board選型,例程選型和交叉對比選型
- 豐富易用的圖形化接口滿足多種配置,并生成相應(yīng)C代碼:
- 引腳配置,自動沖突處理
- Arm Cortex-M內(nèi)核、外設(shè)的參數(shù)配置及動態(tài)驗證
- 中間件模塊管理及配置
- 時鐘樹參數(shù)配置及動態(tài)驗證
- 電源功耗評估
- Arm Cortex-M內(nèi)核MCU初始化C工程的自動生成,適用于IAR Embedded Workbench, MDK-ARM和 STM32CubeIDE (GCC 編譯器) ,STM32CubeMX工程包含生成的初始化C代碼,STM32驅(qū)動、依據(jù)配置的中間件和其他相關(guān)文檔
- 下載或升級STM32Cube嵌入式軟件資源(STM32Cube Packages、STM32Cue Expansion Packages)
- Arm Cortex-A內(nèi)核STM32微處理器部分Linux設(shè)備樹的自動生成,DDR配置
- 通過打開已保存配置的工程切換MCU平臺,易于MCU平臺間移植
- 導(dǎo)出配置報告
- 集成STM32Cube Packages在項目中,
- CAD資源下載(原理圖符號、PCB封裝和3D模型)
- 針對STM32U5系列優(yōu)化功耗的LPBAM配置
- TrustZone友好支持
- 中間件的參數(shù)配置USB、LwIP、FatFS、FreeRTOS、Mbed TLS等
- 針對所有系列可進行Thread-Safe設(shè)置;
- 基于STM32PackCreator可以開發(fā)更豐富的STM32Cube擴展包
- 獨立軟件運行于Windows, Linux , macOS操作系統(tǒng),和64-bit Java 運行環(huán)境
3,從選擇器開始新工程
如何開始一個新的STM32CubeMX工程?STM32CubeMX提供了四種方式,如下圖。
??從選擇MCU/MPU型號開始
在“MCU/MPU Selector”標簽頁下,可以按照Flash/RAM大小,外設(shè),封裝,價格等條件來篩選符合應(yīng)用需求的產(chǎn)品型號。對于人工智能的應(yīng)用,可以使能AI篩選項后,選擇要使用的神經(jīng)網(wǎng)絡(luò)模型,拓撲結(jié)構(gòu)和壓縮比,STM32CubeMX會計算大致需要的FLASH和RAM大小,同時在右側(cè)的列表欄中列出滿足要求的MCU型號。從STM32CubeMX5.5版本開始,“MCU/MPU Selector”標簽頁中,不再包含圖形應(yīng)用MCU選型工具,中間件中也不再包含“Graphics”項。TouchGFX Generator以X-CUBE-TOUCHGFX插件的形式集成到STM32CubeMX中,可以根據(jù)最新的STM32Cube固件庫以及用戶所選的圖形設(shè)置和開發(fā)環(huán)境生成自定義的項目。
?從選擇MCU開發(fā)板開始
在“Board Selector”標簽頁下,可以按照開發(fā)板類型,板載MCU/MPU的系列,MCU/MPU支持的外設(shè)和Flash/RAM大小選擇某個開發(fā)板,新建一個基于該開發(fā)板的STM32CubeMX工程。STM32CubeMX將自動根據(jù)該開發(fā)板默認硬件配置,初始化對應(yīng)的外設(shè)。比如,Nucleo-H743ZI板上默認用到了以太網(wǎng)接口,那么選擇Nucleo-H743ZI板后新建的STM32CubeMX工程默認就已經(jīng)配置好了以太網(wǎng)外設(shè)。
?從選擇例程開始
在“Example Selector”標簽頁下,可以通過各個過濾項,來選擇一個運行在某個具體開發(fā)板上的例程來創(chuàng)建一個工程。比如,選擇運行在Nucleo-H743ZI板上的GPIO-EXTI例程后,STM32CubeMX可以自動幫你生成IAR,KEIL或者SW4STM32工程,直接編譯就可以運行。從6.0.0版本開始提供該功能。
?從MCU交叉選擇器開始
在“Cross Selector”標簽頁下,可以幫助開發(fā)者找到能夠替換當前使用的MCU/MPU的STM32產(chǎn)品。并且可以選擇多個型號進行比較。
4,例程選擇器
以選擇一個例程的方式來新建STM32CubeMX工程,是CubeMX V6.0.0推出的新功能,下面我們就來了解一下這個新功能。該功能將STM32Cube庫里的例程,集成進了STM32CubeMX,用戶可以在“Example Selector”標簽頁,通過左邊一欄的過濾項,選擇一個可以運行在指定開發(fā)板的例程,STM32CubeMX就可以幫我們創(chuàng)建該例程對應(yīng)的IDE工程。對于部分例程還會創(chuàng)建對應(yīng)的CubeMX工程(.ioc),用戶可以基于STM32CubeMX工程進一步修改或者增加其他外設(shè)的配置。
下圖是“Example Selector”標簽頁的界面,左邊的過濾項欄,包括兩大部分:第一部分是開發(fā)板相關(guān)的過濾項,有開發(fā)板類型和MCU系列的選擇;第二部分是工程相關(guān)的過濾項,有IED的選擇,工程類型選擇(外設(shè)例程,應(yīng)用例程和開發(fā)板的Demo。這三個類型分別對應(yīng)STM32Cube庫中Project下的Example,Applications和Demonstrations目錄下的例程),以及中間件和外設(shè)驅(qū)動庫的選擇等。
右下方是滿足當前設(shè)定條件的所有例程的列表,當選中某個例程后,在右上方就會顯示對該例程的描述,需要的STM32Cube庫版本,以及對應(yīng)開發(fā)板的文檔鏈接。點擊例程列表第一列的五角星圖標,還可以將該例程加入收藏,方便下次調(diào)出。
下面,我們將舉例說明如何創(chuàng)建一個運行在Nucleo-H743ZI開發(fā)板上的GPIO_EXTI例程。
進入“Example-Selector”后,首先通過設(shè)定過濾項來縮小選擇范圍。我們通過關(guān)鍵字指定要搜索的是GPIO例程,并指定開發(fā)板類型為Nucleo-144,板載MCU為STM32H743ZI。然后在右側(cè)的列表中就可以看到只有兩個滿足條件的例程,其中有一個GPIO_EXTI例程。
選中該例程,再點擊上方的“Start Project”。
在STM32CubeMX創(chuàng)建工程的過程中,會跳出一個對話框,在該對話框里可以設(shè)置創(chuàng)建工程時需要使用的Cube庫的源文件位置(一般使用Cube庫默認安裝的位置)和目標工程的路徑,這里我們都使用它的默認設(shè)置,然后點擊“OK”。
工程創(chuàng)建成功后,會跳出工程創(chuàng)建成功的對話框,并且在該對話框的下拉列表中顯示:已經(jīng)創(chuàng)建好IAR,KEIL和SW4STM32三個IDE工程(下拉菜單中的“explorer”指僅打開所創(chuàng)建的工程目錄)。可以任選一個打開,我們選擇IAR(EWARM)工程,點擊OK,就會自動打開對應(yīng)的IAR工程了。
對于一些較新的產(chǎn)品系列,CubeMX在創(chuàng)建所選擇的例程時,還會創(chuàng)建STM32CubeIDE的工程,以及STM32CubeMX工程。可以直接打開創(chuàng)建好的STM32CubeMX工程,在其之上修改或添加其他功能。
是否支持同時創(chuàng)建STM32CubeMX工程,可以通過例程說明中的STM32CubeMX版本一項看出,如果標有具體的STM32CubeMX版本,則說明最后會生成STM32CubeMX工程,否則就不會生成STM32CubeMX工程。
5,CAD資源視圖
SM32CubeMX CADT資源視圖可幫助用戶快速訪問和下載1個或多個設(shè)計工具的Symbol原理圖符號,PCB封裝和3D模型。這個功能需要STM32CubeMX保持網(wǎng)絡(luò)連接。
可以通過Help>Updater settings打開STM32CubeMX 更新設(shè)置窗口進行網(wǎng)絡(luò)配置和檢查連接。
CAD資源可以通過MCU選擇器窗口或者STM32CubeMX Project頁面進入。
- 通過MCU選擇器窗口訪問
1.從STM32CubeMX homepage打開MCU選擇器
2.選擇一個MCU型號(市場狀態(tài)不能為“Coming soon”)
3.選擇CAD Resources選項卡查看CAD資源
4.使用滾動條拉低頁面,查看不同的資源視圖(Symbol原理圖符號,PCB封裝和3D模型)
5.選擇設(shè)計工具類型
6.選擇CAD格式
7.同意條款
8.點擊下載
9.選擇下載路徑
- 通過STM32CubeMX Project視圖訪問
1.打開一個STM32CubeMX工程2.從Tools面板打開CAD選項卡進行訪問
Symbol視圖反映了STM32CubeMX工程的引腳配置、可選功能及標注命名。下載后的CAD資源將和這些信息一致。
在STM32CubeMX的Pinout 中如果更改了管腳的名稱,在對應(yīng)的Symbol中也會對應(yīng)修改,需要在最后下載之前點擊refresh symbol previews更新一下, 再下載的內(nèi)容就是修改之后的了。
6,引腳配置
通過前面所說的幾種方式,創(chuàng)建一個新的STM32CubeMX工程后,就會打開下圖中的這個配置窗口。配置窗口有四個標簽頁分別是:“pinout&Configuration”,“Clock Configuration”,“Project Manager”,“Tools“。
在” pinout&Configuration“標簽下,可以使能需要的外設(shè),并進行配置;“Clock Configuration”頁提供了圖形化的時鐘配置工具;在” Project Manager“頁可以對要生成的工程進行配置;”Tools “標簽頁提供了功耗評估工具,可以根據(jù)添加的運行模式及持續(xù)時間,計算出系統(tǒng)的平均功耗以及電池的壽命。此為理論計算值,可作為產(chǎn)品設(shè)計的參考。下面我們就來逐個了解其功能。
我們先來看一下“Pinout&Configuration”標簽頁,在該標簽頁的左邊一欄,所有的外設(shè)被分成:系統(tǒng)內(nèi)核,模擬,定時器,通信,多媒體,安全和計算幾個組進行顯示。比如,點開通信(connectivity)這個組,就可以串口,I2C這些外設(shè)。
freeRTOS, FATFS等協(xié)議棧在Middleware分組下。右邊默認顯示的一個MCU的引腳分配圖,在左邊欄使能了某個外設(shè)后,STM32CubeMx便會自動為這些外設(shè)分配管腳,并該圖對應(yīng)的引腳標記為綠色。也可以直接在這個引腳分配圖中點擊要配置的管腳,在下拉列表中手動為管腳選擇功能。
7,時鐘樹初始化
在“Clock Configuration”標簽頁面,我們看到的是整個MCU的時鐘樹結(jié)構(gòu),包括系統(tǒng)的時鐘源有哪些,時鐘路徑,分頻和倍頻過程等。
在這里,我們可以配置系統(tǒng)工作時鐘和各個外設(shè)的時鐘。如果使用PLLCLK作為系統(tǒng)時鐘源,設(shè)置好HCLK總線時鐘頻率后,STM32CubeMX會自動計算分頻因子。時鐘配置異常時,還會有錯誤提示。
8,外設(shè)配置
在“Pinout&Configuration”標簽頁選中某個外設(shè)后,右側(cè)就會出現(xiàn)對應(yīng)的配置界面,可以對外設(shè)的運行參數(shù),DMA和中斷進行配置。比如圖中的USART3,首先選擇工作模式為異步(Asynchronous)模式,然后在下方的參數(shù)配置欄中,對波特率,數(shù)據(jù)長度,奇偶校驗,停止位以及其他一些高級參數(shù)進行設(shè)置。
在”NVIC Setting”, “DMA Setting”標簽頁下,還可以設(shè)置中斷和使能DMA。“GPIO Setting”標簽頁下可以看到當前分配給該外設(shè)的引腳以及配置情況。
左側(cè)外設(shè)列表中,通過不同的顏色和圖標提示當前外設(shè)的配置情況:綠色的對勾表示當前外設(shè)的所有參數(shù)已經(jīng)配置完成,紫色的交叉圖標,表示配置尚未完成。橘黃色的感嘆號圖標,表示由于引腳沖突等原因,當前外設(shè)至少有一個模式不可用。而紫色的禁止圖標,表示當前外設(shè)的所有模式都不可用。
9,中間件配置
在“Pinout&Configuration”標簽頁的“Middleware”中,用戶可以選擇需要使用的中間件并進行配置,比如FreeRTOS,以太網(wǎng)協(xié)議棧Lwip,USB協(xié)議棧,文件系統(tǒng)等。
有可能你會看到某些中間件處于不可選狀態(tài),這是因為這些中間件的使用和一些硬件外設(shè)相關(guān),需要先使能這些外設(shè)。將鼠標移到想使能的中間件名稱上面,稍等幾秒,就會出現(xiàn)一個灰色的文字框,其中就包含了需要使能哪些外設(shè)的提示。
10,LPBAM配置
在新的STM32CubeMX中,STM32U575/585產(chǎn)品線的工程下用戶可以選擇性的使用LPBAM Scenario&Configuration 界面創(chuàng)建LPBAM應(yīng)用。通過這個界面用戶可以:
- 添加或移除LPBAM應(yīng)用
- 針對任意一個LPBAM應(yīng)用,創(chuàng)建序列
- 針對任意一個序列,使用在Smart Run Domain下外設(shè)LPBAM 固件API創(chuàng)建功能節(jié)點
- 針對任意一個LPBAM應(yīng)用,對Smart Run Domain下外設(shè)進行引腳、時鐘樹、HAL相關(guān)的配置
11,F(xiàn)reeRTOS配置
通過STM32CubeMX FreeRTOS配置窗口,用戶可以配置一個實時操作系統(tǒng)應(yīng)用所需要的所有資源并預(yù)留對應(yīng)的堆棧資源。使用CMSIS-RTOS API函數(shù)定義和生成FreeRTOS相關(guān)部件。配置流程如下:
a.在Pinout&Configuration選項卡下,點擊FreeRTOS打開Mode 和Configuration頁面
b.在Mode面板內(nèi)使能 FreeRTOS
c.在Configuration面板內(nèi)配置FreeRTOS的原生參數(shù)等,比如任務(wù),定時器,隊列和信號量。在Config選項卡下配置內(nèi)核和軟件參數(shù)。在Include parameters選項卡下,選擇應(yīng)用需要的API函數(shù),通過該方法可以優(yōu)化代碼大小。Config選項卡和Include parameters選項卡下的參數(shù)都是FreeRTOSConfig.h文件的一部分。
d.點擊其他選項卡分別對FreeRTOS的任務(wù),隊列,定時器,信號量,堆棧等進行配置。
?12,Thread-Safe配置
無論是前后臺或者是基于RTOS的系統(tǒng)都可能在調(diào)用C庫函數(shù)時存在線程安全Thread-Safe問題,例如下圖對malloc()函數(shù)的調(diào)用。該類問題出現(xiàn)時,公用資源例如RAM數(shù)據(jù)出現(xiàn)沖突而應(yīng)用程序仍能在一段正常運行后才出現(xiàn)問題。對工程師而言,難以調(diào)試,也難以查找到根本原因。STM32CubeMX針對EWARM, MDK-ARM和STM32CubeIDE工具鏈提供了對應(yīng)的Thread-Safe解決策略,可以直接配置完成。
在Project Manager Settings tab選項卡下,Thread-safe Settings區(qū)域可以進行配置,如下圖所示。適用于所有STM32 MCU,支持的IDE是EWARM,MDK-ARM和STM32CubeIDE,選中其他IDE時,則該區(qū)域灰色顯示,不可配置。
13,代碼生成
所有的參數(shù)配置完成后,就可以讓STM32CubeMX來生成初始化的工程了。
在”Project Manager”標簽頁下,有三大類配置,分別在三個子標簽頁下。在“Project”頁下,可以設(shè)定項目名稱,項目位置,選擇工具鏈和固件版本等;在“Code Generator”頁下,可以設(shè)置生成代碼的相關(guān)選項,比如是否拷貝相關(guān)的庫文件,重新生成代碼時,如何處理之前生成的文件等;
在“Advanced Settings”頁面下,可以對要生成的初始化代碼做進一步的設(shè)置,比如使用HAL還是LL驅(qū)動,生成的初始化代碼是否是靜態(tài)函數(shù),是否在主函數(shù)里調(diào)用等。
所有的參數(shù)都設(shè)置好后,點擊“GENERATE CODE”,STM32CubeMX就開始創(chuàng)建工程了。
下面我們來看一下在“Project Manager”標簽頁下需要注意的一些配置項。
1. 選擇不同的項目結(jié)構(gòu)
“Project”頁的“Application structure”項可以設(shè)置兩種不同的項目工程文件結(jié)構(gòu)。
“Basic”結(jié)構(gòu):適合沒有使用中間件或者只使用了一種中間件的項目。用戶代碼分為Src和Inc兩個文件夾,和IDE文件夾位于同一層,這種結(jié)構(gòu)跟Cube庫中的例程的文件結(jié)構(gòu)類似。
“Advanced”結(jié)構(gòu)的構(gòu)成如下圖中所示,用戶應(yīng)用邏輯代碼放在Core文件夾下,每個中間件的適配文件各自放在獨立的文件夾內(nèi)(比如圖中的USB_HOST),并分為和硬件平臺相關(guān)的Target部分以及和應(yīng)用相關(guān)的App部分,這種結(jié)構(gòu)適合使用了多個中間件的項目,使得項目的集成更加容易。
2. 選擇不同的Cube庫版本
STM32CubeMX生成工程的時候,默認會使用當前最新的Cube庫。如果想使用不同的Cube庫版本,可以取消勾選“Use Default Firmware Location”,然后,點擊Browse,在本地電腦中選擇另一個版本的Cube庫。
3. 設(shè)置代碼相關(guān)選項
下圖是“Code Generator”標簽頁的默認設(shè)置。
STM32CubeMX默認會將Cube庫中HAL文件夾的所有文件,和使用到的中間件文件都拷貝到用戶項目中。如果不想拷貝這么多文件,可以選擇“Copy only the necessary library files”,讓STM32CubeMX僅拷貝必須的文件,比如用戶代碼只用到了SPI,就只拷貝HAL文件夾中的SPI驅(qū)動文件。甚至可以選擇“Add necessary library files as reference in the toolchain project configuration file”,不拷貝任何文件,僅建立和Cube庫中文件的鏈接。
在STM32CubeMX生成的工程中,添加用戶自己的代碼,必須將代碼放在由/*USER CODE BEGIN */和/* USER CODE END */標識的用戶代碼區(qū),這樣當再次通過STM32CubeMX生成代碼的時候,用戶添加的代碼才不會被清除,并且一定要保證“Keep User Code when re-generating”項處于勾選狀態(tài)。
通過“Generate peripheral initialization as a pair of .c/.h files per peripheral”可以選擇是否將所有外設(shè)初始化的代碼放在一個文件,還是分開放在獨立的.c/.h文件。
當修改配置后重新生成工程時,默認會刪除不再需要的文件,也可以通過取消勾選“Delete previously generated files when not re-generated”,在下次重新生成工程時,保留這些文件。
為了優(yōu)化系統(tǒng)的功耗,我們一般建議將MCU未使用的GPIO口初始化為模擬輸入,在STM32CubeMX中,可以通過勾選“Set all free pins as analog to optimize power consumption ”,讓其自動生成這部分代碼。
4. 高級設(shè)置
STM32Cube庫里提供有HAL和LL兩類底層驅(qū)動接口,HAL驅(qū)動的移植性更好,但代碼量大,而LL驅(qū)動提供高度優(yōu)化,寄存器層面的訪問,代碼量小,效率高。使用LL驅(qū)動接口需要密切結(jié)合用戶參考手冊,與底層硬件結(jié)合度高,移植工作量也會增加。這兩類驅(qū)動接口,可以在“Advanced Settings”標簽頁下進行選擇。
在該標簽頁下,還列出了STM32CubeMX將會生成的初始化函數(shù),可以在這里設(shè)置是否將該函數(shù)定義為靜態(tài)函數(shù),是否在main函數(shù)中調(diào)用該初始化函數(shù)。
在最右邊一列中,還可以設(shè)置是否使用某個外設(shè)的callback函數(shù),如果設(shè)置為enable,則stm32xxxx_hal_conf.h 文件中對應(yīng)的宏定義為1。
14,功耗計算
STM32CubeMX還有一個有用的功能:功耗評估。在”Tools-PCC“標簽頁下,功耗評估工具頁面中:選擇電池的容量,添加運行模式及持續(xù)時間,CubeMX將會計算出系統(tǒng)的平均功耗以及電池的壽命。此為理論計算值,可作為產(chǎn)品設(shè)計的參考。
-
STM32
+關(guān)注
關(guān)注
2289文章
11011瀏覽量
362355 -
時鐘
+關(guān)注
關(guān)注
11文章
1879瀏覽量
132839 -
CAD
+關(guān)注
關(guān)注
18文章
1110瀏覽量
73855
發(fā)布評論請先 登錄
STM32開發(fā)入門進階必備!《STM32嵌入式系統(tǒng)開發(fā)—基于STM32CubeMX和HAL庫》新書發(fā)布!

STM32MP131C CbueMX中間件無RTOS選項是怎么回事?
STM32CubeMX生成的FreeRTOS源碼格式如何優(yōu)化?
STM32CubeMX用于STM32配置和初始化C代碼生成
工程師開發(fā)利器:STM32CubeMX 與 eDesignSuite 的協(xié)同開發(fā)

使用stm32cubeMX無法生成mdk工程文件?
STM32CubeMX的菜單介紹

中間件全球數(shù)據(jù)實時同步利器,華為云 EventGrid 事件流重磅發(fā)布

DDS通信中間件——DCPS規(guī)范(上)

使用STM32WL系列Sub-GHz無線驅(qū)動程序的應(yīng)用示例

云原生中間件,構(gòu)筑軟件安全可信的連接橋梁

評論