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 库根目录

HAL 固件库结构整理_第1张图片

文件夹名称 作用 备注
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

HAL 固件库结构整理_第2张图片

a、CMSIS(编程必用)

HAL 固件库结构整理_第3张图片

  • 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下文件的文档,网页版的

HAL 固件库结构整理_第4张图片

  • 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这种类型定义

HAL 固件库结构整理_第5张图片

b、STM32H7xx_HAL_Driver(编程常用)

HAL 固件库结构整理_第6张图片

  • 作用
    • 这部分的文件属于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、其他

  • 目前未使用,用到再写

三、附接口调用关系图

HAL 固件库结构整理_第7张图片

参考资料:

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

你可能感兴趣的:(stm32学习)