提示:本文以STM32Cube_FW_H7_V1.5.0爲例
部分解釋
- CMSIS:微控制器軟件接口標準 (CMSIS) 是 Cortex-M 處理器系列的與供應商無關的硬件抽象層。CMSIS 可實現與處理器和外設之間的一致且簡單的軟件接口,從而簡化軟件的重用,縮短微控制器開發人員新手的學習過程,並縮短新設備的上市時間。
- CMSIS-CORE:提供與 Cortex-M0、Cortex-M3、Cortex-M4、SC000 和 SC300 處理器與外圍寄存器之間的接口
- CMSIS-DSP:是一個經過深入優化(手工)的通用數字信號處理函數庫
- CMSIS-DAP:是USB調試器設備單元的一種固件實現
- CMSIS-NN:是一系列高效神經網絡內核的集合
一、HAL 庫根目錄
文件夾名稱 | 作用 | 備註 |
---|---|---|
Documentation | HAL庫幫助文檔 | 講述如何使用固件庫編寫程序 |
Drivers | 官方的 CMSISI 庫,HAL 庫,板載外設驅動 | 主要使用 |
Middlewares | 中間件,包含 ST 官方的 STemWin、 STM32_Audio、STM32_USB_Device_Library、STM32_USB_Host_Library;也有第三方的 fatfs 文件系統等等 | - |
Projects | 用驅動庫寫的針對官方發行 demo 板的例子和工程模板 | 可以以這裏的模板爲框架 |
Utilities | 實用的公用組件 | 如 LCD_LOG 實用液晶打印調試信息 |
其他 | 版本說明,固件庫介紹等 |
二、主要文件介紹
1、Drivers
a、CMSIS(編程必用)
- CMSIS/Core*
- CMSIS-Core 的相關文件
- CMSIS/DAP
- CMSIS-DAP 相關的文件和例子
- CMSIS/DSP
- CMSIS-DSP 相關文件
- CMSIS/Lib
- DSP函數庫
- CMSIS/NN
- CMSIS-NN 相關文件
- CMSIS/RTOS
- 實時操作系統頭文件(Cortex-M)
- CMSIS/RTOS2
- 實時操作系統相關文件(Cortex-M和Armv8-M)
- CMSIS/docs
- CMSIS下文件的文檔,網頁版的
- CMSIS/Driver(使用最多)
- 芯片直接相關的文件,包含啓動文件,芯片外設寄存器定義,系統時鐘初始化功能的一些文件
- system_stm32h7xx.c 文件
- 文件路徑:Drivers\CMSIS\Device\ST\STM32H7xx\Source\Templates
- 該文件包含STM32芯片上電後初始化系統時鐘,擴展外部存儲器用的函數
- 啓動文件
- 文件路徑:Drivers\CMSIS\Device\ST\STM32H7xx\Source\Templates
- 該文件夾下還包含arm,gcc,iar文件夾,這些文件夾下包含了對應編譯平臺下的彙編啓動文件,比如startup_stm32h743xx.s文件
- stm32h7xx.h文件
- 文件路徑:Drivers\CMSIS\Device\ST\STM32H7xx\Include
- 是STM32芯片底層相關的文件,包含了STM32中所有的外設寄存器地址和結構體類型定義,在使用HAL庫的地方都需要包含這個頭文件
- CMSIS/Include(使用最多)
- 是位於CMSIS標準的核內設備函數層的Cortex-M核通用的頭文件
- 作用是爲那些採用Cortex-M核設計的芯片外設提供一個進入內核的接口,定義了一些內核相關的寄存器。
- 這些文件在其他公司的Cortex-M系列芯片也是相同的
- 在core_cm7.h文件中包含了“stdint.h”頭文件,該文件是一個ANSI C文件,是獨立於處理器之外的,位於RVMDK軟件的安裝目錄下,主要是提供一些類型定義
- 文件路徑:keil5.3\ARM\ARMCC\include
- 建議以後編程中使用int8_t這種類型定義
b、STM32H7xx_HAL_Driver(編程常用)
- 作用
- 這部分的文件屬於CMSIS之外的,芯片片上外設部分,是ST的HAL庫的主要內容,操作外設就需要這裏的文件
- 每個外設對應一個.c和.h文件,比如GPIO的操作
- src
- 每個外設設備的驅動源程序
- inc
- src中文件對應的頭文件
- 這部分的文件屬於CMSIS之外的,芯片片上外設部分,是ST的HAL庫的主要內容,操作外設就需要這裏的文件
2、Projects(參考模板)
- \Projects\STM32H743I-EVAL\Templates 下有一些模板,在編程的時候可以用到,比如下面的比較常用
- Projects\STM32H743I-EVAL\Templates\Src下的stm32h7xx_it.c
- 該文件是專門用來編寫中斷服務函數的,期中該文件已經定義了一些系統異常的接口,其他的普通中斷服務函數由自己添加,接口的名字在彙編啓動文件中可以找到
- Projects\STM32H743I-EVAL\Templates\Inc下的stm32h7xx_hal_conf.h和stm32h7xx_it.h
- stm32h7xx_hal_conf.h文件是個配置文件,可以根據芯片用於增減ST庫的外設文件
- stm32h7xx_hal_conf.h中還有一些關於函數入參檢查的函數定義,內容是空的,可以自己來寫功能,待測試完成後在這裏將調試關閉即可
- Projects\STM32H743I-EVAL\Templates\Src下的stm32h7xx_it.c
3、其他
- 目前未使用,用到再寫
三、附接口調用關係圖
參考資料:
1、【野火】《STM32 HAL 庫開發實戰指南—基於H743_Pro》.pdf
2、STM32Cube_FW_H7_V1.5.0
3、https://www.eefocus.com/freescale007/blog/13-07/295486_07c15.html