1、HAL库

1 CMSIS与HAL

CMSIS简介

Cortex Microcontroller Software Interface Standard(CMSIS),即微控制器软件接口标准,是ARM公司与其他合作的芯片厂商和软件工具厂商所共同制定的标准。用户想要通过用户层(代码)控制硬件层,需要经过中间层(CMSIS)。

HAL库简介

ST公司为STM32系列芯片提供了三种库:

标准外设库(Standard Peripheral Libraries)

HAL库/硬件抽象层(Hardware Abstraction Layer)

LL库(Low Layer)

2 STM32Cube

2.1 STM32Cube简介

STM32Cube是ST公司推出的嵌入式软件生态系统,包含硬件资料、驱动、例程等多项内容。

2.2 STM32Cube固件包文件夹

Documentation——STM32Cube的说明文档

Drivers——驱动源码

Middleware——中间文件

Projects——ST官方的开发板例程

Utilities——ST官方开发板公共组件

其中Drivers的子文件夹如下:

BSP——板级支持包文件夹

CMSIS——DSP库,Cortex-M内核及微控制器头文件等

STM32Fnxx_HAL_Driver——Fn系列开发板HAL库源文件和头文件

3 HAL库文件

3.1 HAL库文件介绍(以F1系列为例)

stm32f1xx_hal:HAL库的初始化,系统时钟滴答、HAL库延时等函数

stm32f1xx_hal_conf:用户配置文件,用于裁剪HAL库、配置晶振等

stm32f1xx_hal_def:HAL库通用枚举类型数据和宏定义

stm32f1xx_hal_cortex:内核通用函数定义与声明,包括NVIC、MPU等

stm32f1xx_hal_ppp:外设驱动源码,ppp表示任意外设名称

stm32f1xx_hal_ppp_ex:外设拓展功能驱动源码

stm32f1xx_ll_ppp:LL库驱动源码,部分外设驱动中会被调用

3.2 HAL库API函数和变量命名规则

文件名称

stm32f1xx_hal_ppp

stm32f1xx_hal_ppp_ex

函数名

HAL_PPP_Function

HAL_PPPEx_Function

外设句柄

PPP_HandleTypeDef

初始化结构体

PPP_InitTypeDef

 PPP_InitTypeDef

配置参数结构体

PPP_YyyyConfTypeDef

PPP_YyyyConfTypeDef

初始化与反初始化函数:HAL_PPP_Init(); HAL_PPP_DeInit()

外设读写函数:HAL_PPP_Read(); HAL_PPP_Write(); HAL_PPP_Transmit(); HAL_PPP_Receive()

控制函数:HAL_PPP_Set(); HAL_PPP_Get()

状态与错误:HAL_PPP_GetState(); HAL_PPP_GetError()

3.3 HAL库对寄存器位操作的相关宏定义

__HAL_PPP_ENABLE_IT(__HANDLE__,__INTERRUPT__):使能外设中断

__HAL_PPP_DISABLE_IT(__HANDLE__,__INTERRUPT__):禁用外设中断

__HAL_PPP_GET_IT(__HANDLE__,__INTERRUPT__):获取外设中断源

__HAL_PPP_CLEAR_IT(__HANDLE__,__INTERRUPT__):清除外设中断

__HAL_PPP_GET_FLAG(__HANDLE__,__FLAG__):获取外设状态标记

__HAL_PPP_CLEAR_FLAG(__HANDLE__,__FLAG__):清除外设状态标记

__HAL_PPP_ENABLE(__HANDLE__):使能外设

__HAL_PPP_DISABLE(__HANDLE__):禁用外设

__HAL_PPP_XXXX(__HANDLE__,__PARAM__):特殊操作

__HAL_PPP_GET_IT_SOURCE(__HANDLE__,__INTERRUPT__):检查外设中断源

3.4 HAL库回调函数

HAL_PPP_MspInit()/HAL_PPP_DeInit():存放某些底层外设的初始化函数

HAL_PPP_PRocessCpltCallback():由外设中断或DMA中断调用

HAL_PPP_ErrorCallback():用于外设或DMA中断发送错误时的处理

(该类函数通常被弱定义,可由用户重新定义)

posted @ 2026-08-12 14:04  老鼠学32  阅读(3)  评论(0)    收藏  举报