意法半導(dǎo)體提供的 STM32Cube,旨在通過減少開發(fā)工作量、時間和成本,來顯著提高開發(fā)人員的工作效率。STM32Cube涵蓋整個 STM32 產(chǎn)品系列。
STM32Cube 包括:
—一套用戶友好的軟件開發(fā)工具,覆蓋從設(shè)計到生產(chǎn)的整個工程開發(fā)過程,其中包括:
?圖形軟件配置工具 STM32CubeMX,可通過圖形向?qū)ё詣由沙跏蓟?C 代碼。
?STM32CubeProgrammer(STM32CubeProg),支持圖形接口和命令行接口的編程工具。
?STM32CubeMonitor-Power(STM32CubeMonPwr),測量并幫助優(yōu)化 MCU 功耗的監(jiān)控工具。
?STM32CubeMonitor,配有專用附加組件、利用 STM32WL 執(zhí)行射頻測試(動態(tài)數(shù)據(jù)包傳輸/接收、PER 測量)并以圖形表示射頻性能的多功能監(jiān)控工具。
—針對每個系列提供綜合的嵌入式軟件平臺,(比如用于 STM32WL 系列的 STM32CubeWL):
?STM32 抽象層嵌入式軟件 STM32Cube HAL,確保用戶應(yīng)用在 STM32 各個產(chǎn)品之間實現(xiàn)最大限度的可移植性。
?底層 API(LL)提供快速、輕量且面向?qū)I(yè)人士的層,比 HAL 更接近于硬件。LL API 僅可用于一組外設(shè)。
?一組統(tǒng)一的中間件組件,如 FatFS、FreeRTOS?、LoRaWAN?、SubGHz_Phy、Sigfox?、KMS、SE 和mbed-crypto。
?所有嵌入式軟件實用工具均配備一套完整的示例。
STM32CubeWL 在基于 Arm? Cortex?-M 處理器的 STM32WL 系列微控制器上運行。
級別 0
此層級分為三個子層:
-板級支持包(BSP)
-硬件抽象層(HAL)
?HAL 外設(shè)驅(qū)動程序
?底層驅(qū)動
-基本外設(shè)用例
板級支持包(BSP)
該層提供了對應(yīng)于板載硬件組件的一系列 API(如 LCD、Audio、microSD?和 MEMS 驅(qū)動程序)。它包含兩
部分:
-組件
該驅(qū)動程序與板件上的外部器件(而不是 STM32)有關(guān)。組件驅(qū)動程序為 BSP 驅(qū)動程序的外部組件提供專用 API,并且可以移植到任何其他板件上。
-BSP 驅(qū)動程序
允許將組件驅(qū)動程序鏈接到專用板件上,并提供一組易于使用的 API 。 API 命名規(guī)則是BSP_FUNCT_Action()。示例:BSP_LED_Init(), BSP_LED_On()BSP 基于模塊化架構(gòu),只需執(zhí)行低層級例程,便可輕松移植到任何硬件上。
硬件抽象層(HAL)和底層(LL)
STM32CubeWL HAL 和 LL 是互補(bǔ)的,可滿足廣泛的應(yīng)用要求:
-HAL 驅(qū)動程序提供面向功能的高可移植的頂層 API。它們向最終用戶隱藏了 MCU 和外設(shè)的復(fù)雜性。
HAL 驅(qū)動程序提供通用多實例且面向功能的 API,通過提供可用的步驟來幫助用戶簡化應(yīng)用程序的實現(xiàn)。
例如,對于通信外設(shè)(I2C、UART 等),它提供了 API,用于外設(shè)初始化和配置,以及基于輪詢、中斷或 DMA 處理的數(shù)據(jù)傳輸管理和處理通信過程中可能出現(xiàn)的通信錯誤。
HAL 驅(qū)動程序 API 分為兩類:
?為所有 STM32 系列提供通用功能的通用 API
?以及為特定系列或特定產(chǎn)品編號的器件提供特殊定制功能的擴(kuò)展 API。
底層 API 提供寄存器級別的底層 API,帶有更好的優(yōu)化,但可移植性較差。需要對 MCU 和外設(shè)技術(shù)參數(shù)有深入的了解。
LL 驅(qū)動程序旨在提供一個快速、輕量且面向?qū)I(yè)人士的層,比 HAL 更接近于硬件。與 HAL 相反,LLAPI 不用于優(yōu)化訪問并非關(guān)鍵特性的外設(shè),或者需要大量軟件配置和/或復(fù)雜上層棧的外設(shè)。
底層(LL)驅(qū)動程序具有:
一組函數(shù),用于根據(jù)數(shù)據(jù)結(jié)構(gòu)中指定的參數(shù),對外設(shè)主要特性進(jìn)行初始化
一組函數(shù),用于使用每個字段相應(yīng)的復(fù)位值填充初始化數(shù)據(jù)結(jié)構(gòu)
函數(shù),用于外設(shè)去初始化(外設(shè)寄存器恢復(fù)為默認(rèn)值)
一組內(nèi)聯(lián)函數(shù),用于直接和原子寄存器訪問
完全獨立于 HAL,可在獨立模式(無 HAL 驅(qū)動程序)下使用
涵蓋全部支持的外設(shè)特性
實現(xiàn)雙核:
?相同的 HAL/LL 驅(qū)動程序支持單核及雙核 STM32WL 系列
—在 STM32WL 雙核器件中,兩個內(nèi)核(Cortex?-M4 和 Cortex?-M0+)可以采用相同的方式訪問所有外設(shè)。這意味著,Cortex?-M4 與 Cortex?-M0+之間不存在外設(shè)分割或默認(rèn)分配。為此,兩個內(nèi)核之間共享相同的外設(shè) HAL 和 LL 驅(qū)動程序。
—此外,有些外設(shè)(主要是:RCC、GPIO、PWR、HSEM、IPCC、GTZC...)還具有附加的雙
核特性:
“DUAL_CORE”定義用于界定僅雙核系列上可用的代碼(定義、函數(shù)、宏...)。
“CORE_CM0PLUS”定義用于界定雙核系列上適于 Cortex?-M0+的特定配置/代碼部分的代碼。使用反轉(zhuǎn)或“else”語句時,此定義用于界定雙核系列上適于 Cortex?-M4+的特定配置/代碼部分的代碼。