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#####

介绍 STM32CubeTM是意法半导体的一项原始计划,旨在通过减少 开发工作,时间和成本。 STM32CubeTM涵盖了STM32产品组合。 STM32CubeTM版本1.x包括: STM32CubeMX,一种图形软件配置工具,允许生成C初始化 使用图形向导编写代码。 每个系列都提供了一个全面的嵌入式软件平台(例如STM32CubeF4 STM32F4系列) STM32Cube HAL是STM32抽象层嵌入式软件,可确保最大化 跨STM32产品组合的可移植性 一套一致的中间件组件,例如RTOS,USB,TCP / IP,图形 所有嵌入式软件实用程序均附带全套示例。 HAL驱动程序层提供了一组通用的多实例简单API(应用程序编程) 接口)与上层(应用程序,库和堆栈)进行交互。它由通用组成 和扩展API。它是直接基于通用体系结构构建的,并允许构建层, 例如中间件层,以实现其功能,而无需深入了解如何使用 单片机这种结构提高了库代码的可重用性,并保证了在其他库上的轻松移植 设备。 HAL驱动程序包括一整套现成的API,可简化用户应用程序 实施。例如,通信外围设备包含用于初始化和配置的API 外设,以基于轮询管理数据传输,处理中断或DMA,以及管理 通讯错误。 HAL驱动程序API分为两类:提供通用和通用的通用API 所有STM32系列和扩展API的函数,其中包括特定的和自定义的函数 给定的家庭或零件号。 HAL驱动程序是面向功能的,而不是面向IP的。例如,计时器API分为 IP提供的功能包括以下几类:基本计时器,捕获,脉冲宽度调制 (PWM)等。 驱动程序源代码是在严格的ANSI-C中开发的,使它独立于 开发工具。使用CodeSonarTM静态分析工具进行检查。它是有据可查的,并且 符合MISRA-C 2004。 HAL驱动程序层通过检查所有输入值来实现运行时故障检测 功能。这种动态检查有助于增强固件的鲁棒性。运行时检测 也适用于用户应用程序开发和调试。 本用户手册的结构如下: HAL驱动程序概述 每个外围设备驱动程序的详细描述:配置结构,功能以及使用方法 给定的API来构建您的应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值