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库,这次只是初步了解。

相关推荐
QiZhang | UESTC3 分钟前
InstructGPT_论文精读笔记
人工智能·笔记·深度学习
yu85939584 分钟前
STM32 控制 W5500 以太网传输程序
stm32·单片机·嵌入式硬件
念一不念二5 分钟前
【SSD】三维闪存 异步时序 同步时序
嵌入式硬件
xian_wwq7 分钟前
【学习笔记】探讨大模型应用安全建设系列7——安全评测与红队测试
笔记·学习·安全
LCG元10 分钟前
STM32实战:基于STM32F103的车内防窒息系统(红外检测+GSM报警)
stm32·单片机·嵌入式硬件
_李小白13 分钟前
【android opencv学习笔记】Day 21: 形态学开运算与闭运算
android·opencv·学习
_李小白15 分钟前
【Android车载学习笔记】第四天:AAOS系统架构
android·笔记·学习
XTIOT66616 分钟前
俄罗斯诚信标签Chestny ZNAK技术约束分析与智能化应对思路
大数据·人工智能·嵌入式硬件·物联网
Upsy-Daisy17 分钟前
AI Agent 项目学习笔记(十):文件操作、终端执行与 PDF 生成工具
笔记·学习·pdf
nashane18 分钟前
HarmonyOS 6学习:动画流畅与截图性能的双重优化实战
学习·华为·harmonyos