HAL 固件庫結構整理

提示:本文以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中文件對應的頭文件

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中還有一些關於函數入參檢查的函數定義,內容是空的,可以自己來寫功能,待測試完成後在這裏將調試關閉即可

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章