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中断发送错误时的处理
(该类函数通常被弱定义,可由用户重新定义)

浙公网安备 33010602011771号