STM32F4 HAL库开发 -- STM32CubeMX
一、STM32CubeMX 簡(jiǎn)介
STM32CubeMX 是 ST 意法半導(dǎo)體近幾年來(lái)大力推薦的 STM32 芯片圖形化配置工具, 允許用戶(hù)使用圖形化向?qū)?C 初始化代碼,可以大大減輕開(kāi)發(fā)工作,時(shí)間和費(fèi)用。 STM32CubeMX幾乎覆蓋了 STM32 全系列芯片。它具有如下特性:
① 直觀的選擇 MCU 型號(hào),可指定系列、封裝、外設(shè)數(shù)量等條件
② 微控制器圖形化配置
③ 自動(dòng)處理引腳沖突
④ 動(dòng)態(tài)設(shè)置時(shí)鐘樹(shù),生成系統(tǒng)時(shí)鐘配置代碼
⑤ 可以動(dòng)態(tài)設(shè)置外圍和中間件模式和初始化
⑥ 功耗預(yù)測(cè)
⑦ C 代碼工程生成器覆蓋了 STM32 微控制器初始化編譯軟件,如 IAR, KEIL, GCC。
⑧ 可以獨(dú)立使用或者作為 Eclipse 插件使用
對(duì)于 STM32CubeMX 和 STM32Cube 的關(guān)系這里我們還需要特別說(shuō)明一下, STM32Cube包含 STM32CubeMX 圖形工具和 STM32Cube 庫(kù)兩個(gè)部分,使用 STM32CubeMX 配置生成的代碼,是基于 STM32Cube 庫(kù)的。也就是說(shuō),我們使用 STM32CubeMX 配置出來(lái)的初始化代碼,和 STM32Cube 庫(kù)兼容,例如硬件抽象層代碼就是使用的 STM32 的 HAL 庫(kù)。不同的 STM32 系列芯片,會(huì)有不同的 STM32Cube 庫(kù)支持,而 STM32CubeMX 圖形工具只有一種。所以我們配置不同的 STM32 系列芯片,選擇不同的 STM32Cube 庫(kù)即可。
stm32cubemx用戶(hù)手冊(cè)中文版下載:
https://www.st.com/zh/development-tools/stm32cubemx.html#
二、STM32CubeMX 運(yùn)行環(huán)境搭建
STM32CubeMX 運(yùn)行環(huán)境搭建包含兩個(gè)部分。首先是 Java 運(yùn)行環(huán)境安裝,其次是
STM32CubeMX 軟件安裝。 對(duì)于 Java 運(yùn)行環(huán)境,大家可以到 Java 官網(wǎng) www.java.com 下載最新的 Java 軟件。這里大家需要注意, STM32CubeMX 的 Java 運(yùn)行環(huán)境版本必須是 V1.7 及以上,如果你的電腦安裝過(guò) V1.7 以下版本,請(qǐng)先刪掉后重新安裝最新版本。
安裝完 Java 運(yùn)行環(huán)境之后, 為了檢測(cè)是否正常安裝,我們可以打開(kāi) Windows 的命令輸入框,輸入: java -version 命令,如果顯示 Java 版本信息,則安裝成功。
按照提示安裝STM32CubeMX,安裝完成后打開(kāi)軟件,界面如下圖:
在線安裝HAL庫(kù):
打開(kāi)安裝好的 STM32CubeMX 軟件 點(diǎn)上面的Help -> Manage embedded software packages
會(huì)跳出來(lái)一個(gè)選擇型號(hào)界面 勾選上你要安裝的HAL庫(kù), 點(diǎn)擊“Install Now” 直到安裝成功。
三、使用 STM32CubeMX 工具配置工程模板
大多數(shù)情況下,我們都只使用STM32CubeMX來(lái)生成工程的時(shí)鐘系統(tǒng)初始化代碼以及外設(shè)的初始化代碼,因?yàn)橛脩?hù)控制邏輯代碼是無(wú)法在STM32CubeMX中完成的,需要用戶(hù)自己根據(jù)需求來(lái)實(shí)現(xiàn)。使用STM32CubeMX配置工程的一般步驟是:
1)工程初步建立和保存
2)RCC設(shè)置
3)時(shí)鐘系統(tǒng)(時(shí)鐘樹(shù))配置
4)GPIO功能引腳設(shè)置
5)生成工程源碼
6)編寫(xiě)用戶(hù)代碼
接下來(lái)我們將按照上面6個(gè)步驟,依次教大家使用STM32CubeMX工具生成一個(gè)完整的工程。
1、工程初步建立和保存
工程建立的方法有兩種,第一種方法是打開(kāi)STM32CubeMX之后再主界面點(diǎn)擊 New Project 按鈕,第二種方法是在菜單欄依次點(diǎn)擊 File->New Project。
點(diǎn)擊新建工程按鈕之后,會(huì)彈出MCU選擇窗口。我們依次在選項(xiàng)卡 Series, Lines 和 Package之下選擇與我們使用的芯片 STM32F407ZGT6 對(duì)應(yīng)的參數(shù), 然后選擇對(duì)應(yīng)的芯片型號(hào), 最后點(diǎn)擊Start Project按鈕。
進(jìn)入Pinout選項(xiàng)卡,這個(gè)時(shí)候界面會(huì)展示芯片完整引腳圖。
在引腳圖,我們可以對(duì)引腳功能進(jìn)行配置。圖中黃色的引腳主要是一些電源和GND引腳。如果某個(gè)引腳被使用,那么會(huì)顯示為綠色。
外設(shè)和中間件樹(shù)面板中使用的圖標(biāo)和顏色方案:
2、RCC設(shè)置
對(duì)于STM32芯片而言,RCC配置的重要性不言而喻。在STM32CubeMX中,RCC相關(guān)設(shè)置卻非常簡(jiǎn)單,因?yàn)樗褧r(shí)鐘系統(tǒng)獨(dú)立出來(lái)設(shè)置。在操作界面,搜搜RCC,點(diǎn)擊進(jìn)入RCC配置欄。
設(shè)置:
設(shè)置選項(xiàng) High Speed Clock( HSE )的值為Crystal/Ceramic Resonator(使用晶振/陶瓷振蕩器)
3、時(shí)鐘系統(tǒng)(時(shí)鐘樹(shù))配置
在使用STM32CubeMX配置時(shí)鐘樹(shù)之前,大家需要充分理解STM32時(shí)鐘系統(tǒng)。
Clock Configuration 選項(xiàng)卡即可進(jìn)入時(shí)鐘系統(tǒng)配置欄。
進(jìn)入Clock Configuration配置欄之后可以看到,界面展現(xiàn)一個(gè)完整的STM32F407時(shí)鐘系統(tǒng)框圖。從這個(gè)時(shí)鐘配置圖可以看出,配置的主要是外部晶振大小,分頻系數(shù),倍頻系數(shù)以及選擇器。在我們配置的工程中,時(shí)鐘值會(huì)動(dòng)態(tài)更新,如果某個(gè)時(shí)鐘值在配置過(guò)程中超過(guò)允許值,那么相應(yīng)的選項(xiàng)框會(huì)紅色提示。
我們把系統(tǒng)時(shí)鐘配置分為6個(gè)步驟,分別用①~⑥標(biāo)號(hào)表示,詳細(xì)過(guò)程為:
① 時(shí)鐘源參數(shù)設(shè)置: HSE 或者 HSI 配置。這里我們選擇 HSE 為時(shí)鐘源,所以我們之前必須在 RCC 配置中我們開(kāi)啟 HSE。
② 時(shí)鐘源選擇: HSE 還是 HSI。這里我們配置選擇器選擇 HSE 即可。
③ PLL 分頻系數(shù) M 配置。分頻系數(shù) M 我們?cè)O(shè)置為 25。
④ 主 PLL 倍頻系數(shù) N 配置。倍頻系數(shù) N 我們?cè)O(shè)置為 336。
⑤ 主 PLL 分頻系數(shù) P 配置。分頻系數(shù) P 我們配置為 2。
⑥ 系統(tǒng)時(shí)鐘時(shí)鐘源選擇: PLL,HSI 還是 HSE。 這里毫無(wú)疑問(wèn),我們選擇 PLL,選擇器選擇PLLCLK 即可。
經(jīng)過(guò)上面6個(gè)步驟,就會(huì)生成標(biāo)準(zhǔn)的180MHz系統(tǒng)時(shí)鐘。接下來(lái)我們只需要配置AHB,APB1,APB2和Systick的分頻系數(shù),就可以完全實(shí)現(xiàn)函數(shù)Stm_Clock_Init配置的時(shí)鐘系統(tǒng)。
AHB, APB1 和 APB2 總線時(shí)鐘以及 Systick 時(shí)鐘的最終來(lái)源都是系統(tǒng)時(shí)鐘 SYSCLK。其中AHB 總線時(shí)鐘 HCLK 是由 SYSCLK 經(jīng)過(guò) AHB 預(yù)分頻器之后的來(lái),如果我們要設(shè)置 HCLK 為180MHz,那么我們只需要配置圖中標(biāo)號(hào)⑦的地方為 1 即可。得到 HCLK 之后, 接下來(lái)我們將在圖標(biāo)號(hào)⑧~⑩處同樣的方法依次配置 Systick, APB 以及 APB2 分頻系數(shù)分別為 1, 4 和 2 即可 。 配 置 完 成 之 后 , 那 么 HCLK=168MHZ , Systick 時(shí) 鐘 為 168/1MHz=168MHz ,PCLK1=168MHz/4=42MHz, PCLK2=168MHz/2=84MHz。
4、GPIO功能引腳設(shè)置
可以在搜索欄輸入要搜索的引腳,在引腳圖上會(huì)顯示該引腳的位置。
引腳圖中點(diǎn)擊PC8,會(huì)出現(xiàn)該IO口的功能選項(xiàng)。
GPIO output level: 引腳電平設(shè)置 高/低
GPIO mode: GPIO模式 推挽輸出/開(kāi)漏輸出
GPIO Pull-up/Pull-down: 上拉下拉電阻 上拉電阻/下拉電阻/無(wú)上拉或下拉
Maxinum output speed: 引腳速度設(shè)置 低速/中速/高速
User Label: 用戶(hù)標(biāo)簽 給引腳設(shè)置名稱(chēng) 如LED0
5、UART設(shè)置
點(diǎn)擊Mode選擇Asynchronous(異步)
設(shè)置波特率為115200 Bits/s。傳輸數(shù)據(jù)長(zhǎng)度為8 Bit。奇偶檢驗(yàn)無(wú),停止位1 接收和發(fā)送都使能
DMA Settings,點(diǎn)擊Add,選擇UART5_RX,UART5_TX; Priority 優(yōu)先級(jí)選擇 Very High 非常高。
設(shè)置中斷 UART5 global interrupt 在Enabled 列打?qū)础?br />
6、設(shè)置定時(shí)器
Activated 激活
7、看門(mén)狗設(shè)置
IWDG時(shí)鐘預(yù)分頻系數(shù) 64分頻
計(jì)數(shù)器重裝載值 4095 RLR
超出(溢出)時(shí)間計(jì)算:
Tout=((64×2^PRER) ×RLR)/LSI時(shí)鐘頻率
8、生成工程源碼
然后點(diǎn)擊GENERATE CODE 創(chuàng)建工程
總結(jié)
以上是生活随笔為你收集整理的STM32F4 HAL库开发 -- STM32CubeMX的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 2021年中国药店创新趋势报告
- 下一篇: 2021餐饮外卖商户研究报告