Hardware Abstraction Layer:对硬件(外设)进行抽象
外设结构体
typedef struct{
寄存器类型 寄存器名;
...
} PPP_TypeDef;
外设结构体指针
#define PPPx_BASE 该外设段地址
#define PPPx ((PPP_Type *) PPPx_BASE)
引用外设结构体指针的成员变量
某个外设的段地址+某个寄存器的偏移量
PPPx->寄存器名
对“寄存器”位操作:实现外设的各种功能
PPP_操作名(){
...
PPPx->寄存器名...//进行相关的位操作
...
}
STM32Cube固件包:STM32Cube_FW_XX_Vx.x.x
|-Driver 驱动源文件
|-|-【重要】CMSIS
|-|-【重要】stm32XXxx_HAL_Driver
|-|-BSP:ST为官方开发板设计的板级驱动包:NUCLEO板、探索套件板Discovery、评估板EVAL
|-Middlewares:中间件
|-Project :工程文件官方开发板的demo
|-Utilities :公用组件,包括demo的音频、视频、字库
|-Documentation :使用文档
|-Relase_Notes: 版本更新说明
CMSIS:Cortex Microcontroller Software Interface Standard 由ARM设计的CortexM软件接口标准,ARM实现部分接口,厂商实现部分接口
stm32XXxx_HAL_Driver :ST设计的HAL库
BPS:板级支持包
开发板
时,减少应用层移植的工作量,增加了一个抽象层应用层:主要使用HAL库和BSP库提供的接口函数
CubeMX工程目录 | 外设的数据结构、接口函数 | STM32Cube固件包的Driver目录 |
---|---|---|
Drivers\... | core_cm4.h等文件 | CMSIS\Include |
Drivers\... | stm32f4xx.h stm32f411xe.h system_stm32f4xx.h |
CMSIS\Include\Device\ST\STM32F4xx\Include |
CubeMX工程目录 | 外设的数据结构、接口函数 | STM32Cube固件包的Driver目录 |
---|---|---|
Drivers\... | stm32f4xx_hal.h stm32f4xx_hal_cortex.h stm32f4xx_hal_ppp.h stm32f4xx_hal_ppp_ex.h |
STM32F4xx_HAL_Driver\Inc |
Drivers\... | stm32f4xx_hal.c stm32f4xx_hal_cortex.c stm32f4xx_hal_ppp.c stm32f4xx_hal_ppp_ex.c |
STM32F4xx_HAL_Driver\Src |
HAL接口函数
HAL数据结构
HandleTypeDef:句柄数据类型
原文:https://www.cnblogs.com/rayoli/p/14808321.html