原標題:如何利用STM32CubeMX來自動生成STM32代碼
眾所周知,ARM Cortex M 系列是 ARM 專門為單片機設計的內核。其中,STM32 系列的晶片可以算得上最成功的 ARM Cortex M 系列的晶片了。在最早期,ARM Cortex M 系列的核心剛用在單片機設計的時候,同時期也有很多廠商推出 ARM Cortex M 核心的單片機,但為什麼 STM32 會如此之普及?其中的緣由,離不開當時意法半導體推出的方便的固件庫。
為什麼區區一個 STM32 的固件庫可以有這麼大的作用?這是因為早在 8 位機和 16 位機的時代,單片機內部的每一個外設的寄存器數量是有限的,我們即使一個一個去配置也沒有多少工作量。但是 ARM Cortex M 核心,操作外設時需要配置的寄存器有很多,這樣使用起來就會很麻煩。而意法半導體的固件庫則可以將這些操作變得簡單。
STD 庫和 HAL 庫之分
最早意法半導體推出的適配 STM32 的固件庫被稱為「STD 庫」(標準庫),我們用的最多的「STD 庫」要屬適配在 STM32F1 上面的「STM32F10x_StdPeriph_Lib_V3.5.0」,這個 3.5 版本的固件庫到現在為止還是開發 STM32F1 系列單片機的首選。
同時期的 STM32 系列還包括了 F0,F1,F3,F4,L1 等子系列晶片,並且都為它們適配了「STD 庫」。如圖 1 所示。
圖 1 STD 固件庫的適配系列
大約到 2014 年左右,ST 在標準庫的基礎上又推出了 HAL 庫。實際上,HAL 庫和標準庫本質上是一樣的,都是提供底層硬體操作 API,而且在使用上也是大同小異。有過標準庫基礎的同學對 HAL 庫的使用也很容易入手。個人認為 ST 官方之所以這幾年大力推廣 HAL 庫,是因為 HAL 的結構更加容易整合 STM32Cube,而 STM32CubeMX 是 ST 這幾年極力推薦的程序生成開發工具。所以這兩年新出的 STM32 晶片,ST 直接只提供 HAL 庫。在新型的 STM32 晶片中,用 HAL 庫逐步淘汰標準庫。
目前 STM32 所有的晶片都適配了 HAL 庫。如同 2 所示。
圖 2 HAL 庫的適配系列
很多人從 STD 庫轉來做 HAL 庫可能一開始覺得不習慣,但是配置起來其實和 STD 庫也差不多。比較有意思的是,其實 HAL 庫的代碼可以直接使用 STM32CubeMX 這個軟體來生成,STM32CubeMX 的操作方式非常簡單,下面的內容就來介紹一些這個軟體。
STM32CubeMX 安裝
STM32CubeMX 是一個圖形化的工具,也是配置和初始化 C 代碼生成器(STM32 configuration and initialization C code generation),也就是自動生成開發初期關於晶片相關的一些初始化代碼。
STM32CubeMX 的功能功能框圖如圖 3 所示。從圖 3 中可以看得出,它包含了 STM32 所有系列的晶片,包含示例和樣本(Examples and demos)、中間組件(Middleware Components)、硬體抽象層(Hardwaree abstraction layer)。
圖 3 STM32CubeMX 簡介
STM32CubeMX 的特性如下:
(1)直觀的選擇 STM32 微控制器。
(2)圖形化配置單片機:
引腳狀態顯示
圖形化配置時鐘樹
可以動態確定參數設置的外圍和中間件模式和初始化
功耗預測
(3)STM32CubeMX 可以自動生成主流 IDE 的工程代碼,支持的 IDE,如 IAR、KEIL、GCC。
(4)可獨立使用或作為 Eclipse 插件使用。
STM32CubeMX 是 ST 意法半導體的主動原創工具,它可以減輕開發的時間和費用。STM32CubeMX 集成了一個全面的軟體平臺,支持 STM32 每一個系列的 MCU 開發。這個平臺包括 STM32Cube HAL(一個 STM32 的抽象層集成軟體,確保 STM32 系列最大的移植性)。再加上兼容的一套中間件(RTOS、USB、TCP/IP 和圖形),所有內嵌軟體組件附帶了全套例程。
STM32CubeMX 軟體是運行於 JRE 上面的軟體,因此我們在安裝 STM32CubeMX 這個軟體之前,現需要安裝 JRE。我們可以通過 ST 官網直接下載,JRE 也可以從 Oracle 官網上面下載,當然也可以通過如下的連結,或者掃描圖 4 中的二維碼。
連結:https://pan.baidu.com/s/1fSGZ5J6u0fpBsaRDUZjAzg
提取碼:qvrh
圖 4 STM32CubeMX 和 JRE 下載網盤二維碼
安裝步驟為:
(1) 安裝「jre-8u271-windows-x64」,直接默認安裝即可,如圖 5 所示。
圖 5 安裝 JRE
注意,如果 JRE 沒有安裝成功,則會彈出如圖 6 所示的警告。
圖 6 未安裝 JRE 彈出警告
(2) 解壓「en.stm32cubemx_v6-1-0.zip」壓縮文件,打開「en.stm32cubemx_v6-1-0」文件夾,然後雙擊運行「SetupSTM32CubeMX-6.1.0.exe」文件。接著直接勾選必要的選項,然後無腦點擊下一步即可,如圖 7 所示。
圖 7 stm32cubemx 安裝步驟
到此為止,stm32cubemx 軟體就安裝完成了,我們可以在桌面上看到 stm32cubemx 軟體的快捷方式。如圖 8 所示。
圖 8 stm32cubemx 快捷方式
STM32CubeMX 使用步驟(1)雙擊打開「stm32cubemx」軟體,我們就可以看到圖 9 中顯示的界面了。
圖 9 STM32CubeMX 啟動界面
(2)點擊「File」->「New Project」用來創建一個新的工程,如圖 10 所示。
圖 10 創建新工程
注意,如果出現了圖 10 中間的數據下載提示,並且長時間沒有下載完成時,可以點擊「Cancel」去取消本次下載,不會產生影響。
(3)接下來我們就可以在這個界面上面選擇晶片了,如圖 11 所示,我們例子中選擇了「STM32F429NG」,選擇好晶片之後,點擊「Start Project」。
圖 11 器件選擇
(4)點擊了「Start Project」之後,就會彈出如圖 12 所示的界面,到此為止,我們就可以正式配置這個晶片的資源了。
圖 12 配置功能區域劃分
這個軟體整體配置流程比較傻瓜,操作起來很方便,這裡就不詳細闡述了。
(5)配置好工程之後,就可以導出代碼了,點擊右上方的「GENERATE CODE」即可生成代碼,如果你第一次運行該軟體,系統是會下載安裝一些軟體依賴包,只需要耐心等待安裝完成即可。如圖 13 所示。
圖 13 軟體模型下載
(6)如果軟體包下載完成,那麼就會跳入代碼生成選項界面,如圖 14 所示。
圖 14 工程配置
(7)工程配置完成之後,再點擊一下右上方的「GENERATE CODE」,即可產生最終的代碼,我們代開代碼文件夾就可以看到 Keil 的工程文件了,如圖 15 所示。
圖 15 最終生成的 Keil 代碼
STM32CubeMX 是一款非常不錯的軟體,相信有它的支持,一定會大大降低 STM32 系列單片機的開發難度。
(文章來源:與非網)
(責任編輯:DF318)