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

2020-12-22 東方財富網

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

相關焦點

  • 用STM32單片機實現nrf24無線控制電機和舵機
    材料:1、兩塊stm32F108C8T62、兩個nrf24L01 模塊3、一塊L298N
  • keil5.24創建uCOSIII工程實現stm32實時作業系統(環境配置)
    首先,安裝KEIL5,簡單 不作描述其次,下載 PACK 簡單不作描述(根據具體的STM32期間選型相應的DFP文件)下載需要的middle下載需要的ucosiii 假設你用MCU晶片是stm32f10x,就點擊pack install 左邊選擇器件stm32f1系列,右邊把你要用的OS,arm基本庫,stm32f10x_DFP就是
  • 18位工程師DIY實例教你玩STM系列的微控制器,快速易上手!
    6、使用STM32F103RC實現數字萬用表設計,具備常用功能作為電子工程師,最經常用到的就是萬用表,可以很少人知道萬用表裡面的結構、測電壓的過程。現在就有人用stm32F103 做了個數字萬用表,只有三個常用功能:測電壓(0-50v),測電阻(1k-390k),短路檔,使用了LCD5110 顯示數據,大家不妨動動手開發其他功能。
  • STM32開發筆記47:STM32F4+DP83848乙太網通信指南系列(一)
    但是針對本項目,我們依然使用標準庫函數進行開發,理由是可以參考借鑑大量的乙太網通信實驗代碼,以及ST官方的LWIP協議棧代碼,畢竟這些現有成熟的代碼還都是基於標準庫函數進行編寫的。乙太網層次的理解,白話版有了以上乙太網層次的理解後,我們將STM32F407的網絡架構與之對照理解。STM32F407內置了MAC層的處理能力,並且使用DMA技術強化了MAC層能力。
  • STM32實例-獨立看門狗(IWDG)實驗
    若要修改寄存器,必須首先對 IWDG_KR 寄存器寫入代碼 0x5555。若寫入其他值將重啟防寫。2.寫入 0XAAAA,把 IWDG_RLR 寄存器內值重裝載到計數器中。3.寫入 0XCCCC,啟動 IWDG 功能。此方式屬於軟體啟動,一旦開啟獨立看門狗,它就關不掉,只有復位才能關掉。
  • 解決:keil報錯invalid redeclaration of type name 「s32「
    /Src/Lib」,編譯報錯「D:/Keil/ARM/INC/ST/STM32F10x/stm32f10x_type.h(23): error: #256: invalid redeclaration of type name "s32" (declared at line 470 of "Src/App/stm32f10x.h")」等。
  • ARM DS-5開發STM32程序(Eclipse配合Keil插件使用)
    http://pan.baidu.com/s/1mgHX2JY補充:社區版激活代碼:http://ds.arm.com/zh-cn/ds-5-community-edition/getting-started/3.運行DS-5安裝Keil插件安裝好Keil插件後只是使用了Keil的調試和下載功能,真正與DS-5合體需要在Eclipse
  • MDK中使用STM32官方固件庫
    首先STM32官方固件庫在Keil中的位置是:.h文件在\Keil\ARM\INC\ST\STM32F10x本文引用地址:http://www.eepw.com.cn/article
  • 那些炸裂的炫光海報背景是如何生成的?
    我們可以利用它生成各種各樣的炫彩背景。這個網站最大的特點是,簡單到實際上根本不需要你設置任何參數。每次點擊一下滑鼠就隨機生成一張圖,每次生成的顏色都是隨機的,是不是非常簡單粗暴!下面👇,廢話不多說,我們直接看點擊滑鼠隨機生成的背景。說真的,這個很容易上癮!讓人想一直點擊,根本停不下來!
  • 意法半導體推出面向大眾市場的 STM32WL LoRa無線系統晶片系列產品
    >LoRa兼容多調製系統晶片,在市場上獨樹一幟,促進物聯網連接創新新產品面向大眾市場,可擴大功能和封裝選擇,兼容更多通信協議(例如Sigfox)雙核產品增強處理性能、網絡安全性和應用靈活性2020年12月11日,橫跨多重電子應用領域的全球領先的半導體供應商意法半導體(STMicroelectronics, 簡稱ST;紐約證券交易所代碼
  • Avr單片機和Stm32區別,Avr單片機選型技巧
    ,在功耗和集成度方面也有不俗的表 現,當然和MSP430的功耗比起來是稍微遜色的一些,但這並不影響工程師們對它的熱捧程度,由於其簡單的結構和易用的工具再配合其強大的功能在行業中赫 赫有名…其強大的功能主要表現在:特性:1.內核:ARM32位Cortex-M3CPU,最高工作頻率72MHz,1.25DMIPS/MHz,單周期乘法和硬體除法2.存儲器:片上集成32
  • 快手空白暱稱代碼如何複製?
    現在用快手的朋友很多,現在的多媒體以及短視頻十分的流行,快手用戶也是突破2億,為了讓自己各有個性,經常會看到有有人用空白快手暱稱,很多人覺得神奇但又不知道如何設置,今天以iOS系統為例,來教大家如何甚至快手空白暱稱。
  • 如何用PYTHON代碼寫出音樂
    我一直在做這樣的嘗試,就是通過人工智慧算法實現機器自動的作詞和編曲(在這裡預告下,通過深度學習寫歌詞已經實現了,之後會分享給大家),本文我們主要聊下如何寫曲。說到用代碼寫曲子,有一個東西大家一定要了解就是MIDI。MIDI是一種樂器數字接口,是編曲界最廣泛的音樂標準格式。MIDI並不是真正意義上的音樂文件,大家可以把它理解成樂譜,需要有環境編譯MIDI文件,才可以生成音樂。
  • 低代碼是啥?企業如何利用好低代碼?
    低代碼是否滿足上面的場景需求?我用下圖來概括企業系統的形態和低代碼的合理採用範圍。低代碼要發揮巨大效用,又不會在中長期給企業帶來推倒重來的成本,最好就是固定在「數據+模型」範圍內,進一步到應用、到平臺,幾十年軟體系統的坑都說明了,沒有 one fits all 的技術方案能解決複雜的業務問題。
  • STM32開發環境(工具)之Keil MDK 介紹
    本章將先對STM32常用的開發工具Keil MDK和IAR EWARM進行簡單介紹,然後結合STM32_SK仿真評估板和STM32F103C的開發板講解STM32片上資源使用,最後給出一個基於STM32的數據採集器的應用實例。
  • ANSA二次開發-如何利用Designer搭建窗口?
    本期我們來講講在ANSA中如何個性化定製自己的窗口,我們要講到ANSA自帶的窗口定製功能【Designer】,本文內容部分翻譯自原英文文檔,圖片來自軟體截圖。正文共:2990字 23圖預計閱讀時間:8分鐘1、概述什麼是【Designer】呢?它是一種可以使用圖形用戶界面(GUI)輕鬆生成窗口的工具。
  • 《我的世界手機版》種子代碼分享 最新稀有種子代碼大全
    導 讀 我的世界手機版玩家可以利用種子生成固定的地圖,但是這個的前提是各位玩家需要知道這些代碼源才可以哦!
  • 自己動手不求人 佳能STM鏡頭黴斑清理
    去年九月份,無意清理鏡頭箱的時候,便鬱悶的發現24stm、55-250stm鏡頭髮黴了。