其他分享
首页 > 其他分享> > 嵌入式系统:驱动层

嵌入式系统:驱动层

作者:互联网

Hardware Abstraction Layer:对硬件(外设)进行抽象

一、外设的抽象

1.外设“类”

外设结构体

typedef struct{
  寄存器类型 寄存器名;
  ...
} PPP_TypeDef;

2.外设“对象”

外设结构体指针

#define PPPx_BASE      该外设段地址
#define PPPx               ((PPP_Type *) PPPx_BASE)

3.“寄存器”

引用外设结构体指针的成员变量

某个外设的段地址+某个寄存器的偏移量

PPPx->寄存器名

4.“接口函数”

对“寄存器”位操作:实现外设的各种功能

PPP_操作名(){
  ...
  PPPx->寄存器名...//进行相关的位操作
  ...
}

5.ST提供驱动包

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库提供的接口函数

二、CMSIS

CubeMX工程目录 外设的数据结构、接口函数 STM32Cube固件包的Driver目录
Drivers\... core_cm4.h等文件 CMSIS\Include
Drivers\... stm32f4xx.h
stm32f411xe.h
system_stm32f4xx.h
CMSIS\Include\Device\ST\STM32F4xx\Include

三、STM32 HAL

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

1.HAL设计

HAL接口函数

HAL数据结构
HandleTypeDef:句柄数据类型

四、BSP

标签:...,HAL,系统,hal,嵌入式,寄存器,驱动,外设,接口函数
来源: https://www.cnblogs.com/rayoli/p/14808321.html