介紹
STM32Cube是意法半導(dǎo)體(STMicroelectronics)的一項(xiàng)原創(chuàng)計(jì)劃,旨在通過(guò)減少開(kāi)發(fā)工作量、時(shí)間和成本來(lái)顯著提高開(kāi)發(fā)者的生產(chǎn)力。STM32Cube覆蓋了STM32產(chǎn)品系列。
STM32Cube包括:
? STM32CubeMX,一個(gè)圖形化的軟件配置工具,它允許使用圖形向?qū)蒀初始化代碼。
? 一個(gè)全面的嵌入式軟件平臺(tái),按系列提供(例如STM32CubeN6用于STM32N6設(shè)備)
– STM32Cube HAL,STM32的抽象層嵌入式軟件,確保了在STM32產(chǎn)品系列中的最大可移植性。HAL API適用于所有外設(shè)。
– 低層API(LL),提供了一個(gè)快速、輕量級(jí)的專家導(dǎo)向?qū)樱菻AL更接近硬件。LL API僅適用于一組外設(shè)。
– 一系列一致的中間件組件,如USB、H.264視頻編碼器、圖像信號(hào)處理庫(kù)、Azure? RTOS、OpenBootloader、外部?jī)?nèi)存管理器和加載器。
– 所有嵌入式軟件工具,附帶一套完整的示例。
HAL驅(qū)動(dòng)層提供了一套簡(jiǎn)單、通用的多實(shí)例API(應(yīng)用程序編程接口),用于與上層(應(yīng)用程序、庫(kù)和協(xié)議棧)交互。HAL驅(qū)動(dòng)API分為兩類:通用API,為所有STM32系列提供通用和通用功能;擴(kuò)展API,包括特定和定制功能,適用于特定的線路或部件編號(hào)。HAL驅(qū)動(dòng)包括一套完整的現(xiàn)成API,簡(jiǎn)化了用戶應(yīng)用程序的實(shí)現(xiàn)。例如,通信外設(shè)包含API來(lái)初始化和配置外設(shè)、管理輪詢模式下的數(shù)據(jù)傳輸、處理中斷或DMA以及管理通信錯(cuò)誤。HAL驅(qū)動(dòng)是面向功能而不是面向外設(shè)的。例如,定時(shí)器API被分為幾個(gè)類別,如基本定時(shí)器、捕獲和脈寬調(diào)制(PWM)。HAL驅(qū)動(dòng)層通過(guò)檢查所有函數(shù)的輸入值來(lái)實(shí)現(xiàn)運(yùn)行時(shí)故障檢測(cè)。這種動(dòng)態(tài)檢查增強(qiáng)了固件的健壯性。運(yùn)行時(shí)檢測(cè)也適用于用戶應(yīng)用程序開(kāi)發(fā)和調(diào)試。
LL驅(qū)動(dòng)提供基于STM32外設(shè)可用功能的硬件服務(wù)。這些服務(wù)準(zhǔn)確反映了硬件能力,并提供了必須按照產(chǎn)品線參考手冊(cè)中描述的編程模型調(diào)用的原子操作。因此,LL服務(wù)不是基于獨(dú)立進(jìn)程的,不需要任何額外的內(nèi)存資源來(lái)保存它們的狀態(tài)、計(jì)數(shù)器或數(shù)據(jù)指針。所有操作都是通過(guò)改變相關(guān)外設(shè)寄存器的內(nèi)容來(lái)執(zhí)行的。與HAL不同,對(duì)于那些優(yōu)化訪問(wèn)不是關(guān)鍵特性,或者需要大量軟件配置和/或復(fù)雜上層協(xié)議棧的外設(shè),不提供LL API。
HAL和LL是互補(bǔ)的,并覆蓋了廣泛的應(yīng)用需求:
? HAL提供了高級(jí)和面向功能的API,具有高可移植性。這些API將MCU和外設(shè)的復(fù)雜性隱藏起來(lái),不讓最終用戶看到。
? LL提供了寄存器級(jí)別的低級(jí)API,具有更好的優(yōu)化但可移植性較差。這些API需要對(duì)MCU和外設(shè)規(guī)格有深入的了解。
HAL和LL驅(qū)動(dòng)的源代碼是用嚴(yán)格的ANSI-C開(kāi)發(fā)的,使其獨(dú)立于開(kāi)發(fā)工具。它使用Coverity靜態(tài)分析工具進(jìn)行檢查。它有完整的文檔。
這份用戶手冊(cè)的結(jié)構(gòu)如下:
? HAL驅(qū)動(dòng)程序概述
? 低層驅(qū)動(dòng)程序概述
? HAL和LL驅(qū)動(dòng)程序的共存
? 每個(gè)外設(shè)驅(qū)動(dòng)程序的詳細(xì)描述:配置結(jié)構(gòu)、函數(shù)以及如何使用給定的API構(gòu)建您的應(yīng)用程序
STM32CubeN6 MCU包
STM32CubeN6 MCU包運(yùn)行在基于Arm? Cortex?-M處理器的STM32N6 32位微控制器上。