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