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

相关推荐
aprilaaaaa13 分钟前
(TC397 学习笔记)二、ICU和TIM的时钟计算
笔记·学习·fpga开发
wuyk55527 分钟前
107.FreeRTOS 链表深度解析:从原理到面试满分答案
c语言·开发语言·数据结构·stm32·单片机·链表·面试
hongmai66688832 分钟前
ESP32-WROVER-IE-N4R8:外接天线+8MB内存,专治信号焦虑
笔记·单片机·嵌入式硬件·microsoft·risc-v
Persistent的粽子!1 小时前
C++:类与对象(一)
开发语言·c++·经验分享·笔记
恒锐丰科技林技术员1 小时前
EG11722:高耐压 150V 降压 DC‑DC 电源芯片,工业宽压电源优选方案
经验分享·嵌入式硬件
安河桥。1 小时前
MIPI CSI-2物理层接口:C-PHY与D-PHY技术规格说明
嵌入式硬件·视频
雾削木1 小时前
GPIO基本概念
单片机·嵌入式硬件
xian_wwq1 小时前
【学习笔记】-深度认知系列-第8讲主流AI模型横向评测——GPT、Claude、Gemini、盘古、文心、通义
人工智能·笔记·学习
大牧师1 小时前
TypeORM 学习教程
数据库·sql·学习·node.js·orm·nest.js·typeorm
LCG元2 小时前
STM32 USB CDC 虚拟串口开发实战:从 CubeMX 配置到 printf 重定向与稳定收发
stm32·单片机·嵌入式硬件