STMicroElectronics STM32WBA 系列入門
產品資訊
規格:
- 產品名稱: STM32CubeWBA MCU封裝
- 製造商: 意法半導體
- 相容性: STM32WBA系列微控制器
- 許可: 開源 BSD 許可證
產品使用說明
STM32CubeWBA MCU封裝的主要特點:
STM32CubeWBA MCU 軟體包提供了在 STM32WBA 系列微控制器上開發應用程式所需的所有嵌入式軟體元件。它在 STM32 系列中具有高度可移植性,並附帶 HAL 和 LL API,例如amp文件和中間件組件。
架構結束view:
STM32CubeWBA MCU 套件的架構由三個層級組成:應用程式、函式庫和基於協定的元件、硬體抽象層、BSP 驅動程式、核心驅動程式和低層 API。
常問問題
- STM32CubeWBA MCU 包包含什麼?
該軟體包包括低層 (LL) 和硬體抽象層 (HAL) API,例如amp文件、應用程式、中間件元件,例如 FileX/LevelX、NetX Duo、mbed-crypto 函式庫等。 - STM32CubeWBA MCU 軟體包與 STM32CubeMX 程式碼產生器相容嗎?
是的,該軟體包與用於生成初始化程式碼的 STM32CubeMX 代碼產生器完全相容。
介紹
- STM32Cube 是意法半導體的原創舉措,旨在透過減少開發工作量、時間和成本來顯著提高設計人員的工作效率。 STM32Cube 涵蓋整個 STM32 產品組合。
STM32Cube 包括:- 一套用戶友好的軟件開發工具,涵蓋從概念到實現的項目開發,其中包括:
- STM32CubeMX,一種圖形軟件配置工具,允許使用圖形嚮導自動生成 C 初始化代碼
- STM32CubeIDE,一款集外設配置、代碼生成、代碼編譯、調試功能於一體的開發工具
- STM32CubeCLT,一體化命令列開發工具集,具有程式碼編譯、電路板程式設計和除錯功能
- STM32CubeProgrammer (STM32CubeProg),圖形和命令行版本的編程工具
- STM32CubeMonitor(STM32CubeMonitor、STM32CubeMonPwr、STM32CubeMonRF、STM32CubeMonUCPD),強大的監控工具,可即時微調STM32應用程式的行為和效能
- STM32Cube MCU 和 MPU 軟體包,特定於每個微控制器和微處理器系列的綜合嵌入式軟體平台(例如 STM32WBA 系列的 STM32CubeWBA),其中包括:
- STM32Cube 硬件抽象層 (HAL),確保 STM32 產品組合的最大可移植性
- STM32Cube 底層 API,通過用戶對硬件的高度控制確保最佳性能和占用空間
- 一組一致的中間件組件,例如 ThreadX, FileX / LevelX、NetX Duo、USBX、觸控程式庫、mbed-crypto、TFM、MCUboot、OpenBL 和 STM32_WPAN(包括藍牙®低功耗 profile和服務、Mesh、Zigbee®、OpenThread、Matter 和 802.15.4 MAC 層)
- 帶有全套外圍設備和應用程序的所有嵌入式軟件實用程序amp萊斯
- STM32Cube 擴展包,其中包含嵌入式軟件組件,可通過以下方式補充 STM32Cube MCU 和 MPU 包的功能:
- 中間件擴展和應用層
- Examp在某些特定的 STMicroelectronics 開發板上運行的文件
- 一套用戶友好的軟件開發工具,涵蓋從概念到實現的項目開發,其中包括:
- 本使用手冊介紹如何開始使用 STM32CubeWBA MCU 軟體包。
- 第 2 節 STM32CubeWBA 主要特性介紹了 STM32CubeWBA MCU 封裝的主要特性。
- 第三節 STM3CubeWBA架構詳解view 提供了一個結束view STM32CubeWBA架構和MCU封裝結構。
一般資訊
STM32CubeWBA MCU 軟體套件在基於帶有 Arm® TrustZone® 和 FPU 的 Arm® Cortex®-M32 處理器的 STM32 33 位元微控制器上運作。
筆記: Arm 和 TrustZone 是 Arm Limited(或其子公司)在美國和/或其他地方的註冊商標。
STM32CubeWBA主要特點
- STM32CubeWBA MCU 軟體包在基於帶有 TrustZone® 和 FPU 的 Arm® Cortex®-M32 處理器的 STM32 33 位元微控制器上運作。
- STM32CubeWBA 將開發 STM32WBA 系列微控制器應用程式所需的所有通用嵌入式軟體元件收集在一個軟體包中。根據 STM32Cube 計劃,這套組件具有高度可移植性,不僅可以在 STM32WBA 系列微控制器內使用,還可以在其他 STM32 系列中使用。
- STM32CubeWBA 與 STM32CubeMX 程式碼產生器完全相容,可產生初始化程式碼。該軟體包包括覆蓋微控制器硬體的低層 (LL) 和硬體抽象層 (HAL) API,以及一組廣泛的擴展amp在意法半導體主機板上運作的檔案。為了方便用戶,HAL 和 LL API 以開源 BSD 授權形式提供。
- STM32CubeWBA MCU 軟體套件還包含圍繞 Microsoft® Azure® RTOS 中間件以及其他內部和開源堆疊構建的綜合中間件元件,以及相應的 examp萊斯。
- 它們附帶免費、用戶友好的許可條款:
- 整合且功能齊全的 Azure® RTOS:Azure® RTOS ThreadX
- 使用 Azure® RTOS ThreadX 實作 CMSIS-RTOS
- USB 主機和裝置堆疊附帶許多類別:Azure® RTOS USBX
- 先進的 file 系統和Flash翻譯層: FileX / 等級X
- 工業級網路堆疊:針對許多物聯網協定的效能進行了最佳化:NetX Duo
- 開放式引導程式
- Arm® 可信任韌體-M (TF-M) 整合解決方案
- mbed 加密庫
- ST網路函式庫
- STMTouch觸控感測庫解決方案
- STM32CubeWBA MCU 套件中還提供了實現所有這些中間件元件的多個應用程式和演示。
- STM32CubeWBA MCU 封裝元件佈局如圖 1 所示。
STM32CubeWBA架構之上view
STM32CubeWBA MCU 封裝解決方案圍繞著三個獨立層級構建,這些層級可輕鬆交互,如圖 2 所示。
0級
此層分為三個子層:
- 主機板支援包 (BSP)。
- 硬體抽象層(HAL):
- HAL 週邊驅動程式
- 低層驅動程式
- 基本週邊使用方法amp萊斯。
電路板支援包 (BSP)
此層提供了一組與硬體板中的硬體組件相關的 API(例如 LCD、音訊、microSD™ 和 MEMS 驅動程式)。它由兩個部分組成:
- 組件驅動程式:
此驅動與板子上的外部設備相關,與STM32設備無關。元件驅動程式為 BSP 驅動程式外部元件提供特定的 API,並且可以移植到任何其他板上。 - BSP 驅動程式:
BSP驅動程式允許將組件驅動程式連結到特定的板,並提供一組用戶友好的
蜜蜂。 API命名規則為BSP_FUNCT_Action()。
Examp檔案:BSP_LED_Init()、BSP_LED_On()
BSP 基於模組化架構,只需實現低階例程即可輕鬆移植到任何硬體上。
硬體抽象層 (HAL) 和低層 (LL)
STM32CubeWBA HAL 和 LL 是互補的,涵蓋了廣泛的應用需求:
- HAL 驅動程式提供高級的功能導向的高度可移植的 API。它們向最終用戶隱藏了 MCU 和周邊設備的複雜性。
HAL 驅動程式提供通用的多實例面向功能的 API,透過提供即用型流程來簡化使用者應用程式的實作。對於前amp例如,對於通訊週邊(I2S、UART 等),它提供了 API,允許初始化和配置週邊設備,管理基於輪詢、中斷或 DMA 過程的資料傳輸,以及處理通訊過程中可能出現的通訊錯誤。 HAL 驅動程式 API 分為兩類:- 通用API,為所有STM32系列微控制器提供通用和通用功能。
- 擴展 API,為特定係列或特定部件號提供特定和自訂的功能。
- 低層API提供暫存器層級的低層API,優化較好,但可移植性較差。
- 他們需要對 MCU 和周邊規格有深入的了解。
- LL 驅動程式旨在提供快速、輕量級、面向專家的層,該層比 HAL 更接近硬體。與 HAL 相反,LL API 不提供給優化存取不是關鍵功能的周邊,或需要繁重的軟體配置或複雜的上層堆疊的周邊。
- LL 驅動程式具有以下特點:
- 根據資料結構中指定的參數初始化外圍主要功能的一組函數。
- 一組函數,用於使用與每個欄位對應的重置值填充初始化資料結構。
- 週邊去初始化功能(外設暫存器恢復為預設值)。
- 一組用於直接和原子暫存器存取的內聯函數。
- 完全獨立於 HAL 並能夠在獨立模式下使用(無需 HAL 驅動程式)。
- 全面覆蓋支援的周邊功能。
基本週邊使用方法amp萊斯
該層包含前amp僅使用 HAL 和 BSP 資源在 STM32 週邊裝置上建置的檔案。
1級
此層分為兩個子層:
- 中介軟體組件
- Examp基於中介軟體組件的文件
中介軟體組件
- 中介軟體是一組涵蓋藍牙®低功耗(Linklayer、HCI、Stack)、Thread®、Zigbee®、
- Matter、OpenBootloader、Microsoft® Azure® RTOS、TF‑M、MCUboot 和 mbed-crypto。
- 這層元件之間的橫向互動是透過呼叫特色API來完成的。
- 與低層驅動程式的垂直互動是透過庫系統呼叫介面中實現的特定回調和靜態巨集來完成的。
- 各個中間件組件的主要特點如下:
- Microsoft® Azure® RTOS
- Azure® RTOS ThreadX:一種即時作業系統 (RTOS),專為具有兩種功能模式的嵌入式系統而設計。
- 通用模式:通用 RTOS 功能,例如執行緒管理和同步、記憶體池管理、訊息傳遞和事件處理。
- 模組模式:一種進階使用者模式,允許透過模組管理器即時載入和卸載預先連結的 ThreadX 模組。
- NetX雙核心
- FileX
- USBX
- Azure® RTOS ThreadX:一種即時作業系統 (RTOS),專為具有兩種功能模式的嵌入式系統而設計。
- 低功耗藍牙 (BLE):為鏈路層和堆疊層實施低功耗藍牙協定。
- MCUboot(開源軟體)
- 用於堆疊和相關叢集的 Zigbee® 協定。
- Thread® 協定棧和連結層。
- Arm® 可信任韌體-M、TF‑M(開源軟體):TrustZone® 的 Arm® 平台安全架構 (PSA) 的參考實作以及相關安全服務。
- mbed-crypto(開源軟體):mbed-crypto 中間件提供 PSA 加密 API 實作。
- STM32 觸控感應庫:強大的 STMTouch 電容式觸控感應解決方案,支援接近、觸控鍵、線性和旋轉觸控感應器。它是基於經過驗證的表面電荷轉移採集原理。
- Microsoft® Azure® RTOS
Examp基於中介軟體組件的文件
每個中間件組件都附帶一個或多個 examp文件(也稱為應用程式)展示瞭如何使用它。整合前amp也提供了使用多個中間件組件的文件。
STM32CubeWBA韌體包完畢view
支援的STM32WBA系列裝置和硬件
- STM32Cube 提供圍繞通用架構建構的高度可移植的硬體抽象層 (HAL)。它允許建構層原則,例如使用中間件層來實現其功能,而無需深入了解使用的 MCU。這提高了庫程式碼的可重複使用性,並確保輕鬆移植到其他裝置。
- 此外,由於其分層架構,STM32CubeWBA提供對所有STM32WBA系列的全面支援。
- 使用者只需在 stm32wbaxx.h 中定義正確的巨集即可。
- 表 1 顯示了根據所使用的 STM32WBA 系列裝置定義的巨集。該巨集也必須在編譯器預處理器中定義。
表 1. STM32WBA 系列的宏stm32wbaxx.h中定義的宏 STM32WBA系列裝置 stm32wba52xx STM32WBA52CGU6, STM32WBA52KGU6, STM32WBA52CEU6, STM32WBA52KEU6 stm32wba55xx STM32WBA55CGU6, STM32WBA55CGU6U, STM32WBA55CGU7, STM32WBA55CEU6, STM32WBA55CEU7 - STM32CubeWBA具有豐富的擴充功能amp各個層級的文件和應用程式可讓您輕鬆理解和使用任何 HAL 驅動程式或中間件元件。這些前amp文件在表 2 列出的 STMicroelectronics 板上運行。
表 2. STM32WBA 系列主機板木板 板級 STM32WBA 支援的設備 核子-WBA52CG STM32WBA52CGU6 核子-WBA55CG STM32WBA55CGU6 STM32WBA55-DK1 STM32WBA55CGU7 - STM32CubeWBA MCU 套件可以在任何相容硬體上運作。使用者只需更新 BSP 驅動程式即可移植提供的 examp如果後者俱有相同的硬體功能(例如 LED、LCD 顯示器和按鈕),則該檔案位於板上。
韌體包結束view
- STM32CubeWBA 軟體包解決方案以單一 zip 軟體包形式提供,其結構如圖 3 所示。
- 對於每個板,一組前amp文件提供了 EWARM、MDK-ARM 和 STM32CubeIDE 工具鏈的預先配置專案。
- 圖 4. STM32CubeWBA examp萊塞沃view 顯示了 NUCLEO‑WBA52CG、NUCLEO-WBA55CG 和 STM32WBA55G-DK1 板的專案結構。
- 前任amp文件根據其適用的STM32Cube等級進行分類,命名如下:
- 0級前amples 稱為 Examp萊斯,前amples_LL 和 Examples_MIX。它們分別使用 HAL 驅動程式、LL 驅動程式以及 HAL 和 LL 驅動程式的混合,無需任何中間件元件。
- 1級前amp文件稱為應用程式。它們提供了每個中間件組件的典型用例。借助 Templates 和 Templates_LL 目錄中提供的範本項目,可以快速建立給定板的任何韌體應用程式。
TrustZone® 支援的項目
- TrustZone® 啟用 Examp檔案名稱包含 _TrustZone 前綴。該規則也適用於應用程式(TFM 和 SBSFU 除外,它們本身適用於 TrustZone®)。
- 支持 TrustZone® 的 Examp文件和應用程式提供了由安全和非安全子專案組成的多專案結構,如圖 5 所示。
- 支援 TrustZone® 的專案是根據 CMSIS-5 設備模板開發的,並擴展為包括系統分區標頭 file 分割_ .h,主要負責安全屬性單元(SAU)、FPU的設定、安全執行狀態下的安全/非安全中斷分配。
- 此設定在安全性 CMSIS SystemInit() 函數中執行,該函數在啟動時在進入安全應用程式 main() 函數之前調用。請參閱 Arm® TrustZone®-M 軟體指南文件。
- STM32CubeWBA封裝韌體包提供了預設的記憶體分區_分區。 file位於:\Drivers\CMSIS\Device\ST\STM32WBAxx\Include\T emplates
- 在這些分區中 files,SAU預設是關閉的。因此,IDAU記憶體映射用於安全屬性。請參閱 RM0495 參考手冊中的使用 TrustZone® 技術的安全/非安全分區圖。
- 如果使用者啟用 SAU,則會在分區中預先定義預設的 SAU 區域配置 file如下:
- SAU 區域 0:0x08080000 – 0x081FFFFF(快閃記憶體的非安全安全部分(512 KB))
- SAU 區域 1:0x0BF88000 – 0x0BF97FFF(非安全系統記憶體)
- SAU 區域 2:0x0C07E000 – 0x0C07FFFF(安全性、非安全性可呼叫)
- SAU 區域 3:0x20010000 – 0x2001FFFF(非安全 SRAM2(64 KB))
- SAU 區域 4:0x40000000 – 0x4FFFFFFF(非安全週邊映射記憶體)
- 為了匹配預設分區,STM32WBAxx 系列裝置必須設定以下使用者選項位元組:
- TZEN = 1(啟用 TrustZone® 的設備)
- SECWM1_PSTRT = 0x0 SECWM1_PEND = 0x3F(內部快閃記憶體的 64 頁中的 128 頁設定為安全) 注意:預設情況下,TZEN = 1 時內部快閃記憶體是完全安全的。 (SAU 區域,如果啟用了SAU)。安全/非安全應用程式專案連結器 files 也必須對齊。
- 所有前amples 有相同的結構:
- \Inc 包含所有標頭的資料夾 files.
- 包含原始碼的 Src 資料夾。
- \EWARM、\MDK-ARM 和 \STM32CubeIDE 資料夾包含每個工具鏈的預先配置項目。
- readme.md 和 readme.html 描述 examp文件行為和使其發揮作用所需的環境。
- 國際奧委會 file 允許用戶打開大部分韌體ampSTM32CubeMX 中的檔案。
STM32CubeWBA 入門
運行第一個 HAL example
本節說明執行第一個 ex 有多簡單ampSTM32CubeWBA 內的文件。它使用在 NUCLEO-WBA52CG 板上運行的簡單 LED 切換的生成作為說明:
- 下載STM32CubeWBA MCU包。
- 將其解壓縮到您選擇的目錄中。
- 確保不要修改圖 1 中所示的套件結構。長。
運行第一個啟用 TrustZone® 的 example
- 在載入和運行啟用 TrustZone® 的 ex 之前ample,必須閱讀 examp自述文件 file 對於任何特定配置,這可確保按照第 4.2.1 節 TrustZone® 啟用項目(TZEN=1(使用者選項位元組))中所述啟用安全性。
- 瀏覽至 \Projects\NUCLEO-WBA52CG\Examp萊斯。
- 開啟 \GPIO,然後開啟 \GPIO_IOToggle_TrustZone 資料夾。
- 使用您喜歡的工具鏈打開項目。快速結束view 關於如何開啟、建置和運行 examp下面給出了具有支援的工具鏈的文件。
- 按順序重建所有安全和非安全項目 file並將安全性和非安全性圖像載入到目標記憶體中。
- 運行前ample:通常,安全應用程式每秒切換 LD2,而非安全應用程式切換 LD3 的速度是其兩倍。有關更多詳細信息,請參閱自述文件 file 前任的amp勒。
- 開啟、建置和運行 examp文件與支援的工具鏈,請按照以下步驟操作:
- 溫暖:
- 在前任之下ample 資料夾,開啟 \EWARM 子資料夾。
- 啟動 Project.eww 工作區
- 重建 xxxxx_S 安全項目 files:[項目]>[全部重建]。
- 將 xxxxx_NS 非安全性項目設定為活動應用程式(右鍵點選 xxxxx_NS 項目 [設定為活動])
- 重建 xxxxx_NS 非安全項目 files:[項目]>[全部重建]。
- 使用 [Project]>[Download]>[Download active application] 刷新非安全二進位。
- 將 xxxxx_S 設定為活動應用程式(右鍵點選 xxxxx_S 項目 [設定為活動]。
- 使用 [下載和偵錯] (Ctrl+D) 刷新安全二進位。
- 運行程式:[調試]>[執行(F5)]
- MDK-ARM:
- 開啟 \MDK-ARM 工具鏈。
- 開啟多專案工作區 file 項目.uvmpw。
- 選擇 xxxxx_s 項目作為活動應用程式([設定為活動項目])。
- 建構 xxxxx_s 項目。
- 選擇 xxxxx_ns 項目作為活動項目([設定為活動項目])。
- 建構 xxxxx_ns 項目。
- 載入非安全二進位檔案 ([F8])。這會將 \MDK-ARM\xxxxx_ns\Exe\xxxxx_ns.axf 下載到快閃記憶體)
- 選擇 Project_s 項目作為活動項目([設定為活動項目])。
- 載入安全二進位檔案 ([F8])。這會將 \MDK-ARM\xxxxx_s\Exe\xxxxx_s.axf 下載到快閃記憶體)。
- 運行前amp勒。
- STM32CubeIDE:
- 開啟STM32CubeIDE工具鏈。
- 開啟多專案工作區 file .專案.
- 重建 xxxxx_Secure 專案。
- 重建 xxxxx_NonSecure 專案。
- 啟動安全項目的 [Debug as STM32 Cortex-M C/C++] 應用程式。
- 在[編輯配置]視窗中,選擇[啟動]面板,新增載入非安全性項目的映像和符號。
重要的: 非安全項目必須在安全項目之前載入。 - 按一下[確定]。
- 運行前ample 在調試角度。
- 溫暖:
運行第一個 TrustZone® 禁用 example
- 在載入和運行 TrustZone® 禁用 ex 之前ample,必須閱讀 examp自述文件 file 對於任何特定配置。如果沒有具體提及,請確保板設備已停用安全性(TZEN=0(使用者選項位元組))。請參閱常見問題解答,以了解對 TZEN = 0 進行可選回歸
- 瀏覽至 \Projects\NUCLEO-WBA52CG\Examp萊斯。
- 開啟 \GPIO,然後開啟 \GPIO_EXTI 資料夾。
- 使用您喜歡的工具鏈打開項目。快速結束view 關於如何開啟、建置和運行 examp下面給出了具有支援的工具鏈的文件。
- 全部重建 files 並將圖像載入到目標記憶體中。
- 運行前ample:每次按下 [USER] 按鈕時,LD1 LED 就會切換。有關更多詳細信息,請參閱自述文件 file 前任的amp勒。
- 開啟、建置和運行 examp文件與支援的工具鏈,請按照以下步驟操作:
- 溫暖:
- 在前任之下ample 資料夾,開啟 \EWARM 子資料夾。
- 啟動 Project.eww 工作區(工作區名稱可能會從前一個變更為amp到另一個)。
- 全部重建 files:[項目]>[全部重建]。
- 載入工程鏡像:[工程]>[調試]。
- 運行程式:[調試]>[執行(F5)]。
- MDK-ARM:
- 在前任之下ample 資料夾中,開啟 \MDK-ARM 子資料夾。
- 啟動 Project.uvproj 工作區(工作區名稱可能會從前一個更改為amp到另一個)。
- 全部重建 files:[專案]>[重建所有目標 files]。
- 載入專案映像:[調試]>[啟動/停止調試會話]。
- 運行程式:[調試]>[運行(F5)]。
- STM32CubeIDE:
- 開啟STM32CubeIDE工具鏈。
- 點擊 [File]>[切換工作空間]>[其他]並瀏覽到STM32CubeIDE工作空間目錄。
- 點擊 [File]>[匯入],選擇[常規]>[將現有專案匯入工作區],然後按一下[下一步]。
- 瀏覽至 STM32CubeIDE 工作區目錄並選擇專案。
- 重建所有項目 files:在[Project Explorer]視窗中選擇項目,然後按[Project]>[Build project]選單。
- 運行程式:[運行]>[調試(F11)]
- 溫暖:
開發自訂應用程式
筆記: 軟體必須啟用指令快取(ICACHE)才能從快閃記憶體獲得0等待狀態執行,並達到最大效能和更好的功耗。
使用STM32CubeMX開發或更新應用程式
- 在STM32CubeWBA MCU包中,幾乎所有項目都包含amp檔案是使用 STM32CubeMX 工具產生的,用於初始化系統、週邊和中間件。
- 直接使用現有的項目exampSTM32CubeMX 工具中的檔案需要 STM32CubeMX 6.10.0 或更高版本:
- 安裝 STM32CubeMX 後,開啟並根據需要更新建議的項目。打開現有項目的最簡單方法是雙擊 *.ioc file 以便STM32CubeMX自動開啟專案及其原始碼 files.
- STM32CubeMX產生此類專案的初始化原始碼。主要應用程式原始碼包含在註解“USER CODE BEGIN”和“USER CODE END”中。如果 IP 選擇和設定被修改,STM32CubeMX 會更新程式碼的初始化部分,但保留主要應用程式原始碼。
- 若要在 STM32CubeMX 中開發自訂項目,請遵循逐步流程:
- 選擇與所需週邊集相符的 STM32 微控制器。
- 使用引腳衝突求解器、時脈樹設定幫助器、功耗計算器以及執行 MCU 週邊配置(例如 GPIO 或 USART)和中間件堆疊(例如 USB)的實用程式來配置所有必需的嵌入式軟體。
- 根據所選配置產生初始化 C 程式碼。該程式碼可以在多種開發環境中使用。用戶代碼保留在下一次代碼生成時。
- 有關 STM32CubeMX 的更多信息,請參閱用於 STM32 配置和初始化 C 代碼生成的用戶手冊 STM32CubeMX (UM1718)。
- 有關可用項目的列表ampSTM32CubeWBA 的文件,請參閱應用筆記 STM32Cube 韌體 exampSTM32WBA 系列 (AN5929) 的文件。
驅動程式應用
哈爾應用程式
本節介紹使用 STM32CubeWBA 建立自訂 HAL 應用程式所需的步驟:
- 創建一個專案
- 若要建立新項目,請從 \Projects\ 下為每個板提供的範本項目開始\Templates 或來自 \Projects\ 下的任何可用項目\範例或\項目\ \應用程式(其中指板名稱,例如STM32CubeWBA)。
- Template 專案提供了一個空的主循環函數。不過,這是了解 STM32CubeWBA 專案設定的一個很好的起點。此模板具有以下特點:
- 它包含 HAL 原始碼、CMSIS 和 BSP 驅動程序,它們是在給定板上開發程式碼所需的最小元件集。
- 它包含所有韌體元件的包含路徑。
- 它定義了支援的STM32WBA系列設備,允許正確配置CMSIS和HAL驅動程式。
- 它為用戶提供隨時可用的 file預配置如下:
HAL 使用 Arm® 核心 SysTick 使用預設時基進行初始化。 SysTick ISR 是為了 HAL_Delay() 目的而實現的。
筆記: 將現有項目複製到另一個位置時,請確保更新所有包含的路徑。
- 將必要的中間件添加到用戶項目中(可選)
識別來源 file要新增到項目中 file 列表,請參閱為每個中間件提供的文件。參考\Projects\STM32xxx_yyy\Applications\下的應用程式(在哪裡指的是中間件棧,例如ThreadX)來知道是哪個來源 file必須新增 s 和包含路徑。 - 配置韌體組件
HAL 和中間件元件使用標頭中宣告的巨集 #define 提供一組建置時設定選項 file。模板配置 file 在每個元件中提供,必須將其複製到專案資料夾(通常是配置 file 名為xxx_conf_template.h,複製到專案資料夾時需要去掉_template一詞)。配置 file 提供足夠的資訊來了解每個配置選項的影響。為每個組件提供的文件中提供了更詳細的資訊。 - 啟動HAL庫
跳到主程式後,應用程式程式碼必須呼叫 HAL_Init() API 來初始化 HAL 程式庫,該程式庫執行以下任務:- 配置快閃記憶體預取和 SysTick 中斷優先權(透過 st m32wbaxx_hal_conf.h 中定義的巨集)。
- 配置 SysTick 以依照 stm32wbaxx_hal_conf.h 中定義的 SysTick 中斷優先權 TICK_INT_PRIO 每毫秒產生一個中斷。
- 將 NVIC 組優先權設定為 0。
- 呼叫stm32wbaxx_hal_msp.c使用者定義的HAL_MspInit()回呼函數 file 執行全域低階硬體初始化。
- 配置系統時鐘
系統時脈配置是透過呼叫下面描述的兩個API來完成的:- HAL_RCC_OscConfig(): 此 API 配置內部和外部振盪器。使用者選擇配置一個或所有振盪器。
- HAL_RCC_ClockConfig(): 此 API 設定係統時脈來源、快閃記憶體延遲以及 AHB 和 APB 預分頻器。
- 初始化外設
- 首先編寫外設HAL_PPP_MspInit函數。請如下進行:
- 啟用外設時鐘。
- 配置外設 GPIO。
- 配置 DMA 通道並啟用 DMA 中斷(如果需要)。
- 啟用外設中斷(如果需要)。
- 如果需要,編輯 stm32xxx_it.c 以呼叫所需的中斷處理程序(週邊和 DMA)。
- 如果計劃使用周邊中斷或 DMA,請編寫過程完成回呼函數。
- 在用戶main.c中 file,初始化週邊句柄結構體,然後呼叫函數HAL_PPP_Init()來初始化週邊。
- 首先編寫外設HAL_PPP_MspInit函數。請如下進行:
- 開發應用程式
- 此時此刻tage、系統準備就緒,可以開始使用者應用程式碼開發。
- HAL 提供直覺且隨時可用的 API 來配置週邊。它支援輪詢、中斷和 DMA 程式設計模型,以滿足任何應用要求。關於如何使用各個外設的更多詳細信息,請參考豐富的exampSTM32CubeWBA MCU 套件中提供了文件集。
警告: 在預設的 HAL 實作中,SysTick 定時器用作時基:它以固定的時間間隔產生中斷。如果從週邊 ISR 程序呼叫 HAL_Delay(),請確保 SysTick 中斷的優先權高於週邊中斷(數字上低於週邊中斷)。否則,呼叫者 ISR 程序將被阻塞。影響時基底配置的函數會宣告為 __weak,以便在使用者進行其他實作時可以覆寫 file (使用通用定時器,例如ample,或其他時間源)。有關更多詳細信息,請參閱 HAL_TimeBase examp勒。
法學碩士申請
本節介紹使用 STM32CubeWBA 建立自訂 LL 應用程式所需的步驟。
- 創建一個專案
- 若要建立新項目,請從 \Projects\ 下為每個板提供的 Templates_LL 項目開始\Templates_LL,或來自 \Projects\ 下的任何可用項目\前任amp萊斯_LL(指板名稱,例如 NUCLEO-WBA32CG)。
- 範本專案提供了一個空的主循環函數,這是了解 STM32CubeWBA 專案設定的良好起點。模板主要特點如下:
- 它包含 LL 和 CMSIS 驅動程式的原始程式碼,它們是在給定板上開發程式碼所需的最小元件集。
- 它包含所有必需韌體元件的包含路徑。
- 它選擇支援的 STM32WBA 系列裝置並允許正確配置 CMSIS 和 LL 驅動程式。
- 它為用戶提供了即用型 file預先配置如下:
◦ main.h:LED 和 USER_BUTTON 定義抽象層。
◦ main.c:最大頻率的系統時脈配置。
- 將現有項目移植到另一個板
若要支援另一個目標板上的現有項目,請從為每個板提供的 Templates_LL 項目開始,該項目位於 \Projects\ 下\Templates_LL。- 選擇 LL 前任ample:尋找 LL ex 所在的主機板amp檔案已部署,請參閱 LL ex 列表amp文件 STM32CubeProjectsList.html。
- 移植 LL examp樂:
- 複製/貼上 Templates_LL 資料夾 - 以保留初始來源 - 或直接更新現有的 Templates_LL 專案。
- 然後移植主要包括替換 Templates_LL file前任的amples_LL 目標項目。
- 保留所有電路板特定零件。為了清楚起見,電路板特定零件以特定標記 tags:
- 因此,主要的移植步驟如下:
- 替換stm32wbaxx_it.h file
- 替換stm32wbaxx_it.c file
- 替換main.h file 並更新它:將 LL 模板的 LED 和用戶按鈕定義保留在板特定配置下 tags.
- 替換main.c file 並更新它:
- 將 SystemClock_Config() LL 模板函數的時脈配置保留在 BOARD SPECIFIC CONFIGURATION 下 tags.
- 根據 LED 定義,將每個 LDx 替換為 main.h 中可用的另一個 LDy file.
- 透過這些修改,前ample 現在在目標板上運行
安全應用
該軟體包與安全應用程式一起提供。
SBSFU應用
- SBSFU 提供信任根解決方案,包括安全啟動和安全韌體更新功能(基於 MCUboot)。
- 該解決方案在執行應用程式之前使用。
- 該解決方案提供了一個前amp安全服務(GPIO 切換)的文件,與非安全應用程式隔離。運行時的非安全應用程式仍然可以使用此解決方案。
全聚焦方式應用
TFM 提供信任根解決方案,包括安全啟動和安全韌體更新功能
(基於MCUboot)。該解決方案在執行應用程式之前使用。該解決方案提供與非安全應用程式隔離的 TFM 安全服務。運行時的非安全應用程式仍然可以使用此解決方案。
射頻應用
本應用筆記中描述了 RF 應用:使用 STM32WBA 系列微控制器 (AN5928) 建構無線應用。
取得 STM32CubeWBA 版本更新
STM32WBA 系列提供了最新的 STM32CubeWBA MCU 軟體包版本和修補程式。可以透過 STM32CubeMX 中的「檢查更新」按鈕檢索它們。有關更多詳細信息,請參閱用戶手冊 STM3CubeMX 的第 32 節,以了解 STM32 配置和初始化 C 代碼生成 (UM1718)。
常問問題
- 什麼時候應該使用 HAL 而不是 LL 驅動程式?
- HAL 驅動程式提供高級且功能導向的 API,具有高度的可攜性。對於最終用戶來說,產品或週邊設備的複雜性是隱藏的。
- LL 驅動程式提供低層暫存器級 API,具有更好的最佳化但可移植性較差。他們需要深入了解產品或 IP 規格。
- 我可以同時使用 HAL 和 LL 驅動程式嗎?如果可以的話,有什麼限制嗎?
- 可以同時使用 HAL 和 LL 驅動程式。使用 HAL 進行 IP 初始化階段,然後使用 LL 驅動程式管理 I/O 操作。
- HAL 和 LL 之間的主要區別在於 HAL 驅動程式需要建立和使用句柄進行操作管理,而 LL 驅動程式則直接操作外設暫存器。前任amples_MIX 前amp檔案說明如何混合 HAL 和 LL。
- 如何啟用 LL 初始化 API?
- LL 初始化 API 和關聯資源(結構、文字和原型)的定義由 USE_FULL_LL_DRIVER 編譯開關決定。
- 為了能夠使用 LL 初始化 API,請在工具鏈編譯器預處理器中新增此開關。
- STM32CubeMX如何產生基於嵌入式軟體的程式碼?
STM32CubeMX 具有 STM32 微控制器的內建知識,包括其周邊和軟體,允許向使用者提供圖形表示並產生 *.h 或 *.c file基於用戶配置。
重要通知 - 請仔細閱讀
- STMicroElectronics NV 及其子公司(「ST」)保留隨時對 ST 產品和/或本文檔進行更改、更正、增強、修改和改進的權利,恕不另行通知。採購商在下單前應取得ST產品的最新相關資訊。 ST 產品依照訂單確認時的 ST 銷售條款和條件進行銷售。
- 購買者對 ST 產品的選擇、選擇和使用承擔全部責任,ST 對購買者產品的應用協助或設計不承擔任何責任。
- ST 此處未授予任何知識產權明示或暗示的許可。
- 轉售條款與此處所列資訊不同的 ST 產品將使 ST 對該產品授予的任何保固失效。
- ST 和 ST 標誌是 ST 的商標。 有關 ST 商標的更多信息,請參閱 www.st.com/trademarks。 所有其他產品或服務名稱均為其各自所有者的財產。
- 本文檔中的資訊取代並取代本文檔任何先前版本中先前提供的資訊。
- © 2023 義法半導體 – 保留所有權利
文件/資源
![]() |
STMicroElectronics STM32WBA 系列入門 [pdf] 使用者手冊 STM32WBA系列入門,入門,入門 |