STM32之HAL开发——HAL库框架介绍

HAL库外设设计思想

HAL库借鉴面向对象的设计思想,将外设驱动封装为对象。

HAL库使用主线

HAL使用的主要用在俩个地方,无外乎外设初始化以及外设的使用。想用好这两个功能,我们首先得对外设的封装有一定的了解。
句柄结构体
xx_HandleTypeDef(xx外设句柄结构体,xx表示任意外设名,如GPIO、UART等),这种类似的变量名成为句柄结构体,里面包含着外设初始化所需要用到的配置参数成员。
一般来说都会包含以下这些内容(如图所示):

一、外设初始化

在完成对句柄指针内成员变量的配置后,我们需要调用句柄指针进行一个初始化,HAL库提供的初始化函数有这些,或者说初始化方法有这些:

二、外设的使用

在HAL库中外设的使用就比较复杂了,会有以下这几种常用的使用逻辑:阻塞轮询,中断,DMA。

阻塞轮询

阻塞轮询顾名思义就是在执行完特定任务前,会一直阻塞循环查看当然任务是否被执行完,如果执行完才能运行到程序的下一步,但是在HAL中提供了超时函数,方便超时退出。

中断

DMA

其他功能

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-25 03:36:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-25 03:36:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-25 03:36:03       82 阅读
  4. Python语言-面向对象

    2024-03-25 03:36:03       91 阅读

热门阅读

  1. Git 的 cherry-pick

    2024-03-25 03:36:03       30 阅读
  2. LeetCode热题Hot100-两数相加

    2024-03-25 03:36:03       42 阅读
  3. LeetCode第二天(628. 三个数的最大乘积)

    2024-03-25 03:36:03       44 阅读
  4. 设计模式之观察者模式

    2024-03-25 03:36:03       47 阅读
  5. C++异常处理

    2024-03-25 03:36:03       43 阅读
  6. c++统计字符出现次数

    2024-03-25 03:36:03       39 阅读
  7. 字母在字符串中的百分比

    2024-03-25 03:36:03       40 阅读
  8. LeetCode的使用方法

    2024-03-25 03:36:03       40 阅读
  9. Vue修饰符总结

    2024-03-25 03:36:03       39 阅读
  10. AcWing 3417.砝码称重

    2024-03-25 03:36:03       45 阅读
  11. qinakun实现公共依赖的加载

    2024-03-25 03:36:03       49 阅读