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