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

相关推荐
RainCity4 天前
Java Swing 自定义组件库分享(十二)
java·笔记·后端
FreakStudio11 天前
W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
LinXunFeng12 天前
Obsidian - 使用 Share Note 分享笔记并自部署
前端·笔记·github
通信小呆呆16 天前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
H__Rick16 天前
自动对焦学习-3
人工智能·学习·计算机视觉
✎ ﹏梦醒͜ღ҉繁华落℘16 天前
单片机基础知识---stm32单片机的优先级
stm32·单片机·mongodb
Daisy Lee16 天前
量化学习-第1章-什么是量化金融
学习·金融·datawhale
Alsn8616 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
YM52e16 天前
买菜计算器小应用 - HarmonyOS ArkUI 开发实战-PC版本
学习·华为·harmonyos·鸿蒙·鸿蒙系统
小雨下雨的雨16 天前
HarmonyOS ArkUI训练营入门-组件掌握系列-Animation 动画效果实现-PC版本
学习·华为·harmonyos·鸿蒙