本帖最后由 雨果喝水 于 2023-8-27 17:30 编辑
什么是HAL(Hardware Abstraction Layer)?
from 百度百科:
硬件抽象层是位于操作系统内核与硬件电路之间的接口层,其目的在于将硬件抽象化。它隐藏了特定平台的硬件接口细节,为操作系统提供虚拟硬件平台,使其具有硬件无关性,可在多种平台上进行移植。从软硬件测试的角度来看,软硬件的测试工作都可分别基于硬件抽象层来完成,使得软硬件测试工作的并行进行成为可能。
编程方式发展史:在没有库函数编程时,通常采用配置寄存器的方式进行片上外设的配置,这种通过操作寄存器的编程方式直接且直观,但是要求编程人员可以清晰地**相关寄存器的名称以及要求大量的位运算,再编程时要翻阅datasheet进行查阅,操作繁杂于是库函数编程应运而生,研发人员将寄存器进行二次封装,将一些外设的寄存器配置封装为结构体,用户在使用时直接更改结构体变量就可以完成对底层寄存器的配置,这就是标准外设库(Standard Peripheral Libraries),但是ST公司给出的标准外设库对每一款芯片都不同,在代码移植上很困难,于是HAL库应运而生,HAL库可以更好地确保跨STM32产品的最大可移植性。该库提供了一整套一致的中间件组件,如RTOS,USB,TCP / IP和图形等。相比标准外设库,HAL库表现出更高的抽象整合水平,HAL API集中关注各外设的公共函数功能,这样便于定义一套通用的用户友好的API函数接口,从而可以轻松实现从一个STM32产品移植到另一个不同的STM32系列产品。
ST公司针对不同外设构造了不同的数据类型以及操作这些数据类型的接口函数,开发人员只需要用这些数据类型定义对应的变量,并写入对应的配置参数,然后调用初始化函数完成外设的初始化、调用控制函数控制外设的行为、调用状态函数判断外设的状态。
|