用CubeMX開發HAL學習記錄(一)
- 前言
- 一、CubeMX基本特點
- 1、集成MCU Finder功能,便于用戶進行芯片選型
- 2、圖形化方式配置時鐘、片內外設,自動生成初始化代碼
- 3、具有強大的適應性
- 4、提高開發效率
- 二、CubeMX下載
- 1.CubeMX軟體下載
- 2.安裝環境
- 3.注意事項
- 4.韌體包匯入
- 三、CubeMX生成檔案介紹
- 1.MCU韌體包
- 2.界面介紹
- 3.常規配置
- 總結
前言
筆者還是一名大二學生,目前正在學習CubeMX的開發,自己想通過寫博客來加深自己的學習印象,如有不妥請指正,
一、CubeMX基本特點
1、集成MCU Finder功能,便于用戶進行芯片選型
STM的芯片種類眾多引腳封裝也不盡相同,用戶可以更具自己需要的內核,引腳封裝型別和開發型號選擇自己所需要的那一款MCU,
2、圖形化方式配置時鐘、片內外設,自動生成初始化代碼
STM的時鐘樹都十分龐大且復雜,不同的外設對應著不同的時鐘源,因此對照技術手冊一面面的尋找總線,和時鐘倍頻設定是十分復雜的,而CubeMX可以直接越過這些基礎操作,只對邏輯層進行編輯,極大的節省了時間成本,但不需要配置暫存器或庫函式不代表你不需要去了解時鐘樹,學習STM的人必須先經過時鐘樹的洗禮(本文建議結合CubeMX的時鐘樹和B站正點原子的時鐘樹對比學習)
B站原子哥時鐘樹:https://www.bilibili.com/video/BV1Rx411R75t?p=18
3、具有強大的適應性
可以生成工程框架,支持MDK,EWARM等多種開發環境
不過現在作為一名學生,我一般使用可破解的MDK作為我的開發環境,破解資源(注冊機好像上傳不了可以私聊給,注冊年限到2032年)和軟體資源可以前往我的主頁尋找相關軟體下載
4、提高開發效率
CubeMX極大的節省了我們在軟體上的開發時間,可以專心聚焦于演算法設計和邏輯層的搭建
二、CubeMX下載
1.CubeMX軟體下載
CubeMX軟體可以從官網直接下載,但官網下載比較麻煩且下載速度很慢,因此我上傳了相關安裝包
我上傳的資源:https://download.csdn.net/download/weixin_45826783/14975406
官網的資源:https://www.st.com/en/development-tools/stm32cubemx.html?sc=stm32cubemx
2.安裝環境
因為CubeMX比較特殊它依賴于JAVA環境才能運行,因此還需要給CubeMX配置一個相應的java環境,我這里使用的是jdk,下載途徑我也放在了下面(我實在不想到官網下了,太慢了,我下載了某位博主的)
網址太長了就不粘了,直接在CSDN中的下載位置搜索jdk-8u102-windows-x64.exe,匹配度最高的那個就是啦,
3.注意事項
CubeMX在安裝的時候要注意不要安裝在中文路徑下,否則你的CubeMX生成的代碼將會無法運行(慘痛的經驗教訓),再其次你的Windows的賬戶名千萬別是中文,這應該是開發者的大忌,很多的應用軟體是不兼容中文的,例如CubeMX,,,如果是那就乘早改了吧,
4.韌體包匯入
打開CubeMX軟體在最頂層的那一欄中找到help,如下選擇進行操作,

然后就可以看見要的芯片包了,選擇自己對應的MCU芯片,下載芯片包,我用的是f4的芯片包所以選擇下載了STM32F4最新版本的資源包,其他的包可以暫時不下載,等到需要的時候再下載,

三、CubeMX生成檔案介紹
1.MCU韌體包
STM32微控制器各個產品系列都有獨立的MCU韌體包,且HAL庫也屬于MCU韌體包的一部分,
| STM32Cube_FW_F4_1.24.2 | 內容 |
|---|---|
| Document | 關于MCU韌體包和HAL庫使用的官方檔案 |
| Drivers | 核心驅動 |
| Middleware | USB的驅動和FreeRTOS相關檔案 |
| Projects | 官方例程 |
| Utilities | 各類支撐檔案,如字體檔案和圖形應用例程中使用的圖片檔案等 |
| Drivers | 內容 |
|---|---|
| CMSIS | ARM公司提供的內核微控制器介面標準,如定義和啟動檔案等 |
| STM32F4xx_HAL_Driver | STM32微控制器片內外設的HAL庫驅動檔案主要由.c和.h組成,同時也是學習控制的核心 |
| BSP | 基于HAL庫開發的官方開發板的板級支持包 |
2.界面介紹

打開軟體可以看見如上界面,其具體功能圖中都已經標出,一般在不使用ST官方開發板的情況下我們會選擇基于芯片開發的選項去,這樣我們可以擁有更多可以自己配置的自由引腳,

在芯片選擇界面我們可以根據自己的需求在篩選器中選擇符合自己要求的MCU用來開發,但如果你不打算自己設計開發板的話,就好好看看自己買的開發板MCU是什么型號的,然后從篩選器中輸入你的型號既可,在串列框選中相應的MCU,

選中自己的MCU之后會在主界面出現相應MCU的引腳配置圖,不同的MCU其引腳的封裝數不一樣,且對應的外設功能可以能會有所不同,點擊引腳可以查看對應的功能

在想用相應的外設卻找不到對應引腳的時候可以使用搜索功能,直接搜索對應引腳的引腳號

類別欄羅列了大量的外設和中間件的配置

system core:用于配置GPIO、時鐘源、中斷系統以及系統相關的外設
analog:用于配置A/D和D/A轉換外設
timers:用于配置定時器和實時時鐘外設
connectivity:用于配置I2C、SPI和UART等連接外設
multimedia:用于配置I2S等音頻資料傳輸外設
computing:用于配置CRC校驗外設
middleware:用于配置RTOS和GUI等中間件
3.常規配置
在配置中一般要優先使能其時鐘,我們一般使用BYPASS或者Crystal作為我們的時鐘源,由于內部時鐘采用RC振蕩產生,所以導致其精度不高,所以很少使用,在使能了時鐘以后對應的PH0和PH1引腳會被配置為OSC_IN和OSC_OUT模式,


其次,為了方便我們除錯,還要配置我們的除錯介面,除錯方法如下,在Debug中選擇Serial Wire,CubeMX會自動分配PA13和PA14引腳,

由于時鐘樹的原理有點過于復雜,可以到B站正點原子的視頻中學習,但一般而已我的習慣配置如下,時鐘源的頻率視情況改動,
后面就是對生成的檔案去名了,和之前一樣,檔案名字不要有中文的出現,也不要放在中文路徑下,IDE根據自己安裝的型號去選擇就好了,版本好像沒什么影響,

為了時我們生成的組態檔容易找尋,我們一般會再下面設定生成獨立的.c和.h檔案

在完成這一系列的操作之后點擊生成代碼就可以了(之前沒有設定任何外設,所以生成的代碼沒有初始化外設和GPIO,只有相關的時鐘源使能和除錯介面設定選項)

如果生成的視窗如下圖所示,那說明成功生成,

總結
以上就是自己在學習HAL庫開發第一天的學習結果,嘗試配置了環境和代碼,學進度比較緩慢,慢慢來,學一點寫一點,轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/255299.html
標籤:其他
上一篇:NodeMCU-ESP8266開發(VSCODE+PlatformIO+Arduino框架):第3篇--Blinker_MIOT_LIGHT(點燈科技手機APP控制+米家小愛同學控制)
下一篇:陣列小游戲---火把螢石
