如何利用STM32CubeMX來自動生成STM32代碼

2020-12-24 東方財富網

原標題:如何利用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)

相關焦點

  • 【STM32CUBEMX】 I2C Slave 實現
    /2019/ic-news040243678.html 推薦閱讀 STM32CubeMX 真的不要太好用 於工作內容的變動,我已經很久沒有正經的玩過單片機了,近期又要用它做個小玩意了,還是選 stm32
  • STM32四種庫對比:寄存器、標準外設庫、HAL、LL
    是沒有經過封裝,可見底層寄存器的一套示例代碼。 每個STM32系列的100多個片段演示了如何以最小的內存佔用有效地使用STM32外圍設備。 提供的示例代碼有點類似標準外設庫風格,給大家看下F0的代碼包:
  • 工程師筆記 | 如何結合STM32CubeMX​與MC Workbench生成修改未...
    本文教你使用STM32CubeMX結合MC Workbench生成FOC代碼 該軟體結合STM32CubeMX生成馬達控制代碼。由於MC Workbench軟體的晶片選擇有限,不可能包含所有ST的產品料號,因此有些客戶需要使用該軟體時,會發現選擇的晶片未包含在workbench中。
  • stm32f103zet6與stm32f103rct6的區別
    打開APP stm32f103zet6與stm32f103rct6的區別 發表於 2017-11-10 14:32:43
  • STM32F030 PB1引腳無法置高問題的解決
    一開始初始化代碼如下:    RCC_APB2PeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);     //使能埠時鐘    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;         GPIO_InitStructure.GPIO_Mode
  • STLINK-V3SET|用於STM32 / STM8的在線程式開發工具和燒錄器
    STM32CubeMXSTM32CubeMX是STM32 MCU 初始化代碼生成器,它還有另一個神奇的利器可以幫你很快找到替代競爭廠商MCU的 STM32建議料號!modular in-circuit debugger and programmer for STM32/STM8https://www.st.com/content/st_com/en/products/development-tools/hardware-development-tools/hardware-development-tools-for-stm32
  • stm32的gpio模擬iic小記
    該軟體包是針對來自橫跨多重電子應用領域的全球領先的半導體供應商意法半導體(STMicroelectronics,簡稱ST;紐約證券交易所代碼:STM)的工業級STM32L4 +微控制器開發板的優化過的狀態監測解決方案。 Octonions的新軟體包支持意法半導體在快速增長的工業狀態監測和預測性維護市場上發起的使用STM32微控制器和微處理器開發人工智慧應用的市場活動。
  • 基於stm32f103zet6之使用FSMC驅動TFT的學習
    stm32f103zet6詳細參數如下:stm32f103zet6引腳圖如下:stm32f103zet6引腳定義如下:晶片參考資料:STM32F10x參考手冊 連結: https://pan.baidu.com/s/1w_42XGgUPvElt8XmTt1_2g 提取碼: mee9單片機開發板總結一、 硬體資源說明WIRELESS 模塊接口 這是開發板板載的無線模塊接口(U2)W25Q128 128M
  • STM32的HAL與LL庫能共同使用(混用)嗎?
    標準外設庫地址: https://www.st.com/en/embedded-software/stm32-standard-peripheral-libraries.html 這後面出來的L0、 L4、 L5、 F7、 H7、 G0、 G4等都沒有標準外設庫了。 所以,使用STM32CubeHAL將成為今後的的主流。
  • 用stm32控制4位數碼管_stm32控制共陰數碼管
    1、stm32控制4位共陽數碼管輸出計數 用stm32控制4位數碼管,需要用到GPIO口 PA0~PA11共12個引腳。首先我們來看看數碼管的原理圖。 GPIO_Pin_2); break; case 9: GPIO_SetBits(GPIOA,GPIO_Pin_2|GPIO_Pin_0); break;} s = s / 10; delay_ms(1); if (s==0) break;}}} 最後main的測試代碼
  • esp32和stm32哪個好_ESP32對比ESP8266
    esp32和stm32哪個好_ESP32對比ESP8266 單片機愛好者 發表於 2020-04-23 11:06:19   esp32和stm32哪個好
  • 「STM32」「01」STM32CubeIDE教程_建立工程
    0 序言前面的文章介紹了STM32主流IDE並根據自己的使用經驗做了評價,最後選定了STM32CubeIDE做為最終的IDE,本文將介紹STM32CubeIDE的使用方法。1 STM32CubeIDE簡介STM32CubeIDE是ST官方推出的開發工具,整合了STM32CubeMX和TrueSTUDIO,並且免費使用,支持Windows、Mac和Linux,是一款跨平臺商業性非常友好的IDE。
  • STM32-(05):GPIO原理與操作
    環境: STM32F107主控,採用STLINK仿真代碼如下:static void TIM5_Init_Query(CALC_TYPE type,uint32_t val){ TIM_TimeBaseInitTypeDef Tim5; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5,ENABLE); Tim5.TIM_Period=1; //???
  • stm32的VCC/VDD/VSS/VEE/VBAT的區別
    先看一下stm32vet6的引腳圖吧 關鍵字:stm32  VCC  VDD  VSS  VEE  VBAT 編輯:什麼魚 引用地址:http://news.eeworld.com.cn/mcu/ic484333.html
  • STM32開發筆記33:解決USB CDC 「該設備無法啟動」問題
    按照上述設置生成的程序,下載到晶片後,接入計算機,默認是這樣的該軟體包是針對來自橫跨多重電子應用領域的全球領先的半導體供應商意法半導體(STMicroelectronics,簡稱ST;紐約證券交易所代碼:STM)的工業級STM32L4 +微控制器開發板的優化過的狀態監測解決方案。 Octonions的新軟體包支持意法半導體在快速增長的工業狀態監測和預測性維護市場上發起的使用STM32微控制器和微處理器開發人工智慧應用的市場活動。
  • STM32ADC使用方法解析
    因項目需要使用到STM32的ADC功能,雖然對ADC的使用並不陌生,但是第一接觸stm32的ADC功能還是有種無從下手的感覺,主要是因為STM32ADC設計較為複雜,一時對相關的專業術語較為生疏,此外固件庫中涉及到的函數雖都進行了分門別類但是還是感覺函數較多,難以很快掌握,現就將個人理解寫出,以便大家共同進步。
  • STM32Cube HAL庫中斷處理機制,回調函數實現原理
    很多人都知道STM32CubeMX這套工具的一個目的:減少開發者對STM32底層驅動的開發時間,把重心放在應用代碼上。但是,STM32CubeMX只是生成了底層驅動的初始化代碼。所以,我們還需要掌握:應用層代碼如何調用HAL庫函數(API接口),以及HAL庫中斷處理機制等相關知識。
  • STM32 PB4不能做普通IO解決方法
    該軟體包是針對來自橫跨多重電子應用領域的全球領先的半導體供應商意法半導體(STMicroelectronics,簡稱ST;紐約證券交易所代碼:STM)的工業級STM32L4 +微控制器開發板的優化過的狀態監測解決方案。 Octonions的新軟體包支持意法半導體在快速增長的工業狀態監測和預測性維護市場上發起的使用STM32微控制器和微處理器開發人工智慧應用的市場活動。