自从ST公司推出HAL库来替代原有的标准库,HAL库开始慢慢的被广大STM32开发者所接受,现在已经在实际的项目开发中大量使用,HAL库使得项目的移植变得简单容易,但是对于初学者而言,刚开始接触有些晦涩难懂。
本文将详细介绍HAL库的目录结构和功能。
1.1 HAL库下载
- 点击STM32CubeF1_软件开发包,当前最新版本是v1.8.0
- 进入下载页面,点击立即下载,需要登录账号才能下载
1.2 HAL库说明
HAL库下载解压后的目录
- Documentation:文件夹下是HAL库帮助文档
- Drivers:文件夹下是官方的CMSIS库,HAL库,板载外设驱动
- Middlewares:中间组建
- Projects:文件夹下是用驱动库写的针对官方发行 demo 板的例子和工程模板。
- Utilities:实用的公共组件
- Release_Notes.html:库的版本更新说明
1.2.1 CMSIS文件说明
- Include文件夹:内核相关头文件,该文件夹含有核内设备层函数的Cortex-M核通用的头文件,这些文件是为了那些实用Cortex-M核设计的SOC的芯片产商设计的芯片提供提供一个进入内核的接口。
- Device文件夹:该文件夹放的是具体的芯片直接相关文件,包含启动文件、芯片外设寄存器定义、系统时钟初始化的一些文件,由ST公司提供。
- Core:Cortex-M内核相关文件
- DSP:DSP函数源文件
- RTOS:实时操作系统头文件
几个重要的文件:
- system_stm32f1xx.c文件:
文件目录:\STM32Cube_FW_F1_V1.8.0\Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates
文件包含了STM32芯片上电后初始化系统时钟、扩展外部存储器用的函数,根据需要编辑该文件
-
启动文件
文件目录:\STM32Cube_FW_F1_V1.8.0\Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates
该目录下,包含了"arm","gcc'',"iar"等,这些文件夹下包含了对应编译平台的汇编启动文件
- stm32F103xx.h文件
文件目录:STM32Cube_FW_F1_V1.8.0\Drivers\CMSIS\Device\ST\STM32F1xx\Include
该文件非常重要,是一个STM32芯片底层相关文件,包含了STM中所有的外设寄存器地址和结构体类型定义,在会用HAL库的地方都要包含这个头文件。
- stm32f1xx_it.c文件
文件目录:STM32Cube_FW_F1_V1.8.0\Projects\STM32F103RB-Nucleo\Templates\Src
该文件用来专门编写终端服务函数的,这个文件已经定义了一些系统异常的接口,其他普通终端服务函数由我们自己添加。
- stm32f1xx_hal_conf.h文件
文件目录:STM32Cube_FW_F1_V1.8.0\Projects\STM32F103RB-Nucleo\Templates\Inc
该文件被包含在stm32f103xx.h文件,可以使用这个文件根据芯片型号增减ST库的外设文件,时钟源也是在这里配置的。
1.2.2 STM32F1xx_ HAL _Driver 文件夹
文件目录:STM32Cube_FW_F1_V1.8.0\Drivers\STM32F1xx_HAL_Driver
STM32F1xx_HAL_Driver 文件夹下有inc和src文件夹,在文件夹里的就是ST公司针对每个STM32外设编写的库函数文件,每个外设对应一个.c和.h后缀的文件。我们把这类外设文件统称为:stm32f1xx_hal_ppp.c 或 stm32f1xx_hal_ppp.h文件,PPP 表示外设名称。
最后是HAL库各文件之间的调用关系,熟记此图对理解HAL很重要