
目錄一、STM32CubeMX 簡介二、開發環境搭建2.1 安裝JAVA環境2.2 安裝STM32CubeMX2.3 安裝關聯固件包三、STM32CubeMX使用建議四、使用STM32CubeMX新建工程4.1 新建工程4.2 時鐘源設置4.3 時鐘系統時鐘樹配置4.4 GPIO 功能引腳配置4.5 配置Debug選項4.6 生成工程源碼結語一、STM32CubeMX 簡介STM32CubeMX是ST意法半導體近幾年來大力推薦的STM32芯片圖形化配置工具允許用戶使用圖形化向導生成C初始化代碼可以大大減輕開發工作時間和費用。由于HAL庫具有低耦合、通用、抽象了硬件層使得開發者無需太過關注硬件驅動的實現使得開發更加的簡單快速更容易維護因此被越來越多的產品所使用。STM32CubeMX 具有如下特性①直觀的選擇 MCU 型號可指定系列、封裝、外設數量等條件;②微控制器圖形化配置③自動處理引腳沖突④動態設置時鐘樹生成系統時鐘配置代碼⑤可以動態設置外圍和中間件模式和初始化⑥功耗預測⑦C 代碼工程生成器覆蓋了 STM32微控制器初始化編譯軟件如 IARKEILGCC⑧可以獨立使用或者作為 Eclipse 插件使用⑨可作為 ST的固件包、芯片手冊等的下載引擎注意使用STM32CubeMX生成的是HAL庫二、開發環境搭建STM32CubeMX運行環境搭建包含兩個部分。首先是Java運行環境安裝其次是STM32CubeMX軟件安裝因為STM32CubeMX依賴于Java。2.1 安裝JAVA環境下載鏈接https://www.java.com/zh-CN/雙擊安裝包即可默認安裝安裝完成如下安裝完成后按快捷鍵WINR打開運行輸入cmd回車打開終端在里輸入java -version如顯示Java版本信息確認安裝成功2.2 安裝STM32CubeMX下載地址www.st.com/stm32cube接下來我們直接雙擊SetupSTM32CubeMX-6.2.0-Win.exe點擊Next接受本許可協議勾選第一項即可修改安裝路徑創建快捷方式Next繼續安裝完成Done打開2.3 安裝關聯固件包STM32CubeMX只是圖形工具想要生成對應工程還需要對應的STM32Cube固件包所以新建工程前我們先來下載和關聯 STM32Cube 固件包點擊 Help-Manage embedded software packages然后彈出管理界面在該窗口找到 STM32F4 列表選項勾選 1.26.0 版本。方法一下載好之后會自動關聯方法二點擊后彈出下面的窗口然后選擇光盤中的對應的固件包注意這里是壓縮包的形式關聯本地 STM32Cube 固件包關聯好固件包我們就可以開始新建工程了三、STM32CubeMX使用建議使用 CubeMX 的環境搭建工程工程文件夾路徑、文件名不要帶任何中文及中文字符否則會遇到各種報錯造成錯誤的原因是 CubeMX 對中文的支持不友好且生成的 MDK 工程默認通過工程中的CMSIS 那個綠色的控件選擇啟動文件而不是直接添加啟動文件(startup_xxx.s)到我們的工程中而有中文路徑時就會找不到有兩個解決辦法①用 CubeMX 生成的工程不要放置在包含中文路徑的文件夾下②添加啟動文件到我們的工程中我們新建一個 Application/MDK-ARM 分組把startup_stm32f407xx.s 添加到這個分組如圖所示關于配置的文件 CubeMX 工程(.ioc 后綴)名字有中文的情況我們建議重新新建工程或者把生成的工程文件重命名為英文。因為帶中文的 CubeMX 工程生成的 MDK 的 Output 目錄有中文MDK 也會報錯盡管可以重新設置 MDK 工程的 Output 目錄和添加1所描述步驟的啟動文件使本次編譯通過但下次重新用 CubeMX 生成工程時仍舊需要重復修改配置。四、使用STM32CubeMX新建工程4.1 新建工程方法一依次點擊“File”“New Project”即可建新工程。如果之前打開過的話左側最近打開的過程一列會有打開的工程列表直接點擊這些工程也可以打開。方法二直接點擊 ACCESS TO MCU SELECTOR。點擊新建工程后第一次可能會聯網下載一些的文件進入芯片選型界面選擇具體的芯片型號4.2 時鐘源設置進入工程主設計界面后首先設置時鐘源 HSE 和 LSE。圖中的標號4和5我們都選擇了 Crystal/Ceramic Resonator表示外部晶振作為它們的時鐘源。選項 Master Clock Output 1 用來選擇是否使能 MCO1 引腳時鐘輸出。4.3 時鐘系統時鐘樹配置點擊 Clock Configuration選項卡即可進入時鐘系統配置欄從這個時鐘樹配置圖可以看出配置的主要是外部晶振大小分頻系數倍頻系數以及選擇器。在我們配置的工程中時鐘值會動態更新如果某個時鐘值在配置過程中超過允許值那么相應的選項框會紅色提示。這里我們將配置一個以 HSE 為時鐘源配置 PLL 相關參數然后系統時鐘選擇 PLLCLK為時鐘源最終配置系統時鐘為 168MHz 的過程。同時還配置了 AHBAPB1APB 和 Systick的相關分頻系數。由于圖片比較大我們把主要的配置部分分兩部分來講解第一部分是配置系統時鐘第二部分是配置 SYSTICK、AHB、APB1 和 APB2 的分頻系數。我們把系統時鐘配置分為七個步驟分別用標號①~⑦表示詳細過程為① 時鐘源參數設置我們選擇 HSE 為時鐘源所以我們要根據硬件實際的高速晶振頻率這里我們是 8MHz填寫。② 時鐘源選擇我們配置選擇器選擇 HSE 即可。③ PLL1 分頻系數 M 配置。分頻系數 M 我們設置為 4。④ PLL1 倍頻系數 N 配置。倍頻系數 N 我們設置為 168。⑤ PLL1 分頻系數 P 配置。分頻系數 P 我們配置為 2。⑥ 系統時鐘時鐘源選擇PLL,HSI 還是 HSE。我們選擇 PLL選擇器選擇 PLLCLK 即可。⑦ 經過上面配置以后此時 SYSCLK168MHz。經過上面的 7 個步驟就配置好 STM32F4 的系統時鐘為 168MHz。接下來我們還需要配置AHB、APB1、APB2 和 Systick 的分頻系數為 STM32 的片上外設或 M4 內核設置對應的工作時鐘為后續使用這些硬件功能做好準備。AHB、APB1 和 APB2 總線時鐘以及 Systick 時鐘的來源于系統時鐘 SYSCLK。其中 AHB總線時鐘 HCLK 由 SYSCLK 經過 AHB 預分頻器之后得到如果我們要設置 HCLK 為168MHz(最大為 168MHz)那么我們只需要配置圖中標號的地方為 1 即可。得到 HCLK 之后接下來我們將在圖標號⑨~?處同樣的方法依次配置 Systick、APB1 和 APB2 分頻系數分別為 1、4和2。注意systick 固定為 168MHz配置完成之后那么 HCLK168MHzSystick168MHzPCLK142MHzPCLK284MHz4.4 GPIO 功能引腳配置回到 STM32CubeMX的PinoutConfiguration選項在搜索欄輸入PE0后回車接下來我們在引腳圖中點擊 PE0在彈出的下拉菜單中選擇 IO 口的功能為 GPIO_Output。設置好即可看到引腳從灰色變成綠色標識該管腳已經啟用。配置完 IO 口功能之后還要配置 IO 口的速度上下拉等參數這些參數我們通過 System Core下的GPIO選項進行配置我們先配置 PE0點擊④號框里面的 PE0。GPIO output levelIO 的初始值由于 LED 一端接 VCC另一端接 GPIO故要點亮 LED燈時使 GPIO 輸出低電平即可。為了一開始讓 LED 燈熄滅我們設置初始值輸出高電平。GPIO mode我們已經在視圖中配置為推挽輸出了這里不需要修改。GPIO Pull-up/Pull-down默認是無上下拉我們這里用默認配置。Maximum output speed輸出速度配置默認是低速我們設置為高速。User Label用戶符號我們可以給 PE0 起一個別名 LED0。4.5 配置Debug選項由于CubeMX默認把Debug選項關閉了這樣會給我們帶來麻煩用 CubeMX 生成的工程編譯下載一次后后續再次下載就會提示錯誤因此我們要把 Debug 選項打開。如果已經不小心關閉了 Debug 選項那么下次下載的時候按住復位鍵等到工程提示的時候松開復位鍵即可因為 STM32 的芯片默認復位上電時的 Debug 引腳功能是開啟的。4.6 生成工程源碼選擇 Project Manager- Project選項用來配置工程的選項我們了解一下里面的信息。Project Name工程名稱填入工程名稱半角不能有中文字符Project Location工程保存路徑點擊 Browse 選擇保存的位置半角不能有中文字符Toolchain Folder Location:工具鏈文件夾位置默認即可。Application Structure應用的結構選擇 Basic基礎不勾選 Do not generate the main(),因為我們要其生成 main 函數。Toolchain/IDE:工具鏈/集成開發環境我們使用 Keil因此選擇 MDK-ARMMin Version 選擇 V5.27這里根據 CubeMX 的版本可能會有差異我們默認使用 V5 以上的版本即可。Linker Settings 鏈接器設置Minimum Heap Size 最小堆大小默認大工程需按需調整。Minimum Stack Size 最小棧大小默認大工程需按需調整。MCU and Firmware Package 是 MCU 及固件包設置MCU Reference目標 MCU 系列名稱。Firmware Package Name and Version固件包名稱及版本。注意不要勾選Use latest available version接下來我們配置生成代碼的配置選項。打開 Project Manager- Code Generator 選項Generated files 生成文件選項勾選 Generate peripheral initialization as a pir of ‘.c/.h’files per peripheral勾選這個選項的話將會將每個外設單獨分開成一組.c、.h 文件使得代碼結構更加的清晰至此工程最基礎配置就已經完成點擊藍色按鈕(SENERATE CODE)就可以生成工程完整的 STM32F4 工程就已經生成完成Drivers 文件夾存放的是 HAL 庫文件和 CMSIS 相關文件。MDK-ARM 下面存放的是 MDK 工程文件。Src 文件夾下面存放的是工程必須的部分源文件。Template.ioc 是 STM32CubeMX 工程文件雙擊該文件就會在 STM32CubeMX 中打開。在彈出來的窗口中點擊 Open Project 就打開 MDK 工程結語使用CubeMX 可以幫助我們快速搭建工程使用戶專注于應用開發但 STM32 的開發與硬件密切相關對 STM32 開發來說拋開底層只專注做應用并不實際畢竟無法使用一套通用設計來滿足不同用戶的需求。本篇只講CubeMX的基礎使用不對CubeMX的使用過多講解。正常項目基于寄存器版或者標準庫學習CubeMX生成的HAL庫主要是為了后續的電機FOC矢量控制與RT-Threa物聯網打基礎