STM32_HAL库驱动框架

HAL库使用主线:外设初始化和外设使用

1.对外设的封装

xx_HandleTypeDef  (xx时外设句柄结构体,xx表示任意外设名,比如GPIO,UART等),

xx_HandleTypeDef成员包括以下对象

Instance成员xx_TypeDef类型(具体的外设对象,比如GPIOA,GPIOB,串口1,串口2,IIC1,IIC2,DMA1的一个通道等等)一般指向一个外设基地址
Init成员xx_InitTypeDef类型(外设对象的工作参数,用于配置外设如何工作),配置外设如何工作
Hdma*成员DMA_HandleTypeDef类型,可能一个句柄结构体中有多个(如果外设支持DMA功能,此成员链接至一个具体的DMA通道)
LOCK锁HAL_LockTypeDef类型(防止资源竞争,在对外设进行操作的时候,有些操作时不可重入的,保证操作的完整性)
STATUS状态HAL_xx_StateTypeDef类型(提示外设的状态)

2.外设初始化方法

HAL_xx_Init参数一般为xx外设的句柄结构体(初始化外设的函数,通过xx_HandleTypeDef下的init的成员配置的参数,将对应外设的相关寄存器配置好,在配置寄存器前,会先调用hal_xx_mspinit函数,将底层的相关资源初始化完成,如时钟,使用到的引脚,中断使能,DMA开启等)
HAL_xx_MspInit参数一般为xx外设的句柄结构体(将外设适用的相关资源初始化完成,比如时钟,引脚等),需要用户自己设置
其他Init方法具体参考HAL库驱动.c中的####How to use this driver####块下的注释

3.外设使用逻辑

使用外设,就是启动外设功能,一般与以下几种方法

3.1阻塞轮询(Polling)

xx_start
xx_read\write
...等等函数,特征,传入参数需要一个Tomeout参数

3.2中断

xx_start_it

HAL_XX_IRQHandler,(xx外设中断处理函数,在中断入口函数调用,该函数传入参数一般为xxx_HandleTypeDef),该函数中,一般会检测外设状态寄存器的标志,根据不同的标志,最终会回调不同的回调函数)

各种HAL_XX_xxCallback

xx_read\write_it
xx-xx_it

3.3 DMA(进行数据传输,在CPU不完全监控下进行数据搬运)

xx_start_dmaDMA功能
xx_read\write_dma
xx_xx_dma...等等DMA启动安徽念书,特征,函数名以dma结尾

3.4 其他功能

标志查询/清除,终端功能使能\失能,时钟使能/失能

_HAL_xx_ENABLE_IT
_HAL_xx_GET_FLAG
...等等

对HAL库的全面了解使用

####how to use this driver####

 总结:

1.定义并填充xxx外设句柄结构体

2.如果遵循HAL库规范,通过HAL_xxx_MspInit()函数,实现外设底层资源的初始化,包括但不限于GPIO,时钟,DMA,中断等资源初始化

3.调用HAL库的对应外设初始化函数,形如HAL_XXX_Init()

4.初始化完成,开始使用外设

5.使用方法具体查看对应的外设的HAL库驱动包中的说明

#####How to use this driver#####

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值