基于HAL库驱动的开发

HAL库使用主线

  1. 外设初始化
  2. 外设使用
    在这里插入图片描述

HAL库驱动框架

  1. 对外设的封装:使用xx_HandleTypeDef (xx外设句柄结构体,xx表示任意外设名,如GPIO, UART等)
  • Instance成员(xx_TypeDef类型)----指向了外设内,一个具体的外设对象,如GPIOA、GPIOB、串口1、串口2、IIC1、IIC2、DMA1的一个通道等等,实际上,它用指针指向一个外设基地址
  • Init成员(xx_InitTypeDef类型)----指向了一个具体外设的初始化结构体,用来配置外设的工作参数,用于配置外设如何去工作
  • Hdma*成员(DMA_HandleTypeDef类型,可能一个句柄结构体中有多个)
  • 其他资源,如:LOCK锁(HAL_LockTypeDef类型),STATUS状态(HAL_xx_StateTypeDef类型)–指示外设状态
  1. 外设初始化使用方法:
  • HAL_xx_Init,参数一般为xx外设的句柄结构体(初始化外设的函数,通过对xx_HandleTypeDef下的Init的成员配置的参数,将对应外设的相关寄存器配置好。在配置寄存器前,会先调用hal_xx_mspinit函数,将底层的相关资源初始化完成,如时钟、使用到的引脚、中断使能、DMA开启等。)
  • HAL_xx_MspInit,参数一般为xx外设的句柄结构体 (将外设底层的相关资源初始化完成,如时钟、使用到的引脚等。)
    其他Init方法
  1. 外设使用逻辑
  • 阻塞轮询(Polling)
    • xx_start
    • xx_read/write
    • …等等函数。特征,传入参数需要一个Timeout参数
  • 中断(It)
    • xx_start_it
      HAL_XX_IRQHandler(XX外设中断处理函数,在中断入口函数调用。该函数传入参数一般为xxx_HandleTypeDef,该函数中,一般会检测外设状态寄存器的标志。根据不同的标志,最终会回调不同的回调函数。)
      各种HAL_XX_xxCallback(对应xx外设发生xx状态时调用到的函数。由HAL_XX_IRQHandler函数调用。如GPIO产生的EXTI中断,最终可以调用到HAL_GPIO_EXTI_Callback回调函数。串口外设产生的发送完成标志,可以调用到发送完成回调函数HAL_UART_TxCpltCallback。)
    • xx_read/write_it
    • xx_xx_it…等等中断启动函数。特征,函数名以IT结尾
  • DMA
    • xx_start_dma:DMA功能
    • xx_read/write_dma
    • xx_xx_dma…等等DMA启动函数。特征,函数名以DMA结尾
  • 其他功能
    • 标志查询/清除,中断功能使能/失能,时钟使能/失能
      • __HAL_xx_ENABLE_IT
      • __HAL_xx_GET_FLAG
      • …等等
  1. 对HAL库驱动全面了解,查看----##### How to use this driver #####

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值