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

相关推荐
蓝田生玉1233 小时前
BEVFormer论文阅读笔记
论文阅读·笔记
mftang3 小时前
STM32 IO接口推挽输出 (PP)和开漏输出 (OD)
stm32·嵌入式硬件·推挽输出·开漏输出
西瓜堆3 小时前
提示词工程学习笔记: 工程技术行业提示词推荐
笔记·学习
天骄t3 小时前
嵌入式系统与51单片机核心原理
linux·单片机·51单片机
VekiSon4 小时前
51单片机——从入门到实操
单片机·嵌入式硬件·51单片机
Arciab4 小时前
51单片机_中断&定时器
单片机·嵌入式硬件·51单片机
2401_863326114 小时前
基于单片机超高精度电参数测试设计
单片机·嵌入式硬件
搁浅小泽4 小时前
DIP插装加工整线流程
单片机·嵌入式硬件·可靠性工程师
wxr06165 小时前
GOF笔记
笔记·适配器·ooad
charlie1145141916 小时前
嵌入式的现代C++教程——constexpr与设计技巧
开发语言·c++·笔记·单片机·学习·算法·嵌入式