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