STM32-HAL库学习,初识HAL库

上次我学完了基本库的,这次我们来学习一下HAL库,加深我们的认知。

一.初识HAL库

可以看到我们有三个可以用的库,我们已经学完了第一个标准外设库,也就是标准库。

HAL库目前是全系列兼容,而且远离抽象层,每个函数接口基本差不多,非常容易移植。

在官方下载的HAL库大概分为这些文件。

之后来看一下各个文件夹都是干什么的。

之后是各个文件夹里面的内容。

然后就是选择启动文件

xe对应大容量,xb是中容量

因为我们用到的是arm所以启动文件需要在arm里面去找。

我们编译用到的文件,第一个是ac5,第二个是ac6.第三个是ac5和ac6共用的。第四个公用的,第五个m3内核芯片用的,第六个是mpu内存保护用的。

之后是各个文件的详细作用。

接下来是函数的命名规则。

我们学过标准库一下子就看明白,这就是GPIO_Inint(),相当于是外设初始化,不同的就是hal库加入了前缀HAL。

基本就是读取值,写入值,传输,接受。和基本库差不多。set就是设置函数,get就是获取参数。然后就是获取状态,获取错误的标志位。

看过标准库的话,我们很好理解,比如说,enable就是使能,disenable就是失能,然后it就是中断,这些韩式很好理解的。get就是获取中断标志位,clear就是清除中断标志位,这些都是老朋友了。然后他的形参会有专门寄存器的定义。

二.重点

1.初始化回调函数

接下来的是HAL库的重点也是标准库有所不同的地方就是HAL库的回调函数

第一个回调函数是用来存放GPIO等等外设初始化代码的地方,他本身是一个空函数,我们需要把底层驱动放在这里面,它自己就会调用它。

比如说这是函数。可以看到里面是一个空函数。可以看到他被_weak修饰。

在这里我们可以看到被_weak修饰的都是若函数,是允许用户重新定义的函数。

举个例子,我们可以清除的认知,这都是跟标准库差不多,结构体重命名,引出成员,赋值,对应相应的位置。可以看到用到GPIO就开启GPIO,用到时钟就开启时钟,用到哪个我们初始化哪个就好。

2.中断回调函数

就不需要我们和标准库一样,设置要读取哪个,中断标志位,在这个函数里面,已经完成了自己读取中断的任务了。这个函数可以被热河中断调用,然后再函数里面判断是那个中断。

比如说我们的串口回调函数,进来判断是那个产生的,之后完成我们中断的功能就可以,不必再去判断标志位,读取标志位,清除标志位了。这些函数自己就帮我们完成了。之后我们会来详细解释如何使用HAL库,这次只是初步了解。

相关推荐
BackCatK Chen15 小时前
STM32+FreeRTOS:嵌入式开发的黄金搭档,未来十年就靠它了!
stm32·单片机·嵌入式硬件·freertos·低功耗·rtdbs·工业控制
菩提小狗16 小时前
小迪安全2023-2024|第5天:基础入门-反弹SHELL&不回显带外&正反向连接&防火墙出入站&文件下载_笔记|web安全|渗透测试|
笔记·安全·web安全
Wentao Sun16 小时前
致敬软件创业者2026
笔记·程序人生
ZH154558913116 小时前
Flutter for OpenHarmony Python学习助手实战:GUI桌面应用开发的实现
python·学习·flutter
编程小白202617 小时前
从 C++ 基础到效率翻倍:Qt 开发环境搭建与Windows 神级快捷键指南
开发语言·c++·windows·qt·学习
学历真的很重要17 小时前
【系统架构师】第二章 操作系统知识 - 第二部分:进程与线程(补充版)
学习·职场和发展·系统架构·系统架构师
深蓝海拓17 小时前
PySide6,QCoreApplication::aboutToQuit与QtQore.qAddPostRoutine:退出前后的清理工作
笔记·python·qt·学习·pyqt
酒鼎17 小时前
学习笔记(3)HTML5新特性(第2章)
笔记·学习·html5
L***一17 小时前
2026届大专跨境电商专业毕业生就业能力提升路径探析
学习
.小墨迹17 小时前
apollo学习之借道超车的速度规划
linux·c++·学习·算法·ubuntu