HAL库学习

发布时间:2023年12月18日

CMSIS简介

CMSIS:Cortex Microcontroller Software Interface Standard,微控制器软件接口标准。由ARM和其合作的芯片厂商(ST、NXP)、软件工具厂商(KEIL、IAR),共同制定的标准。

在这里插入图片描述

  • 用户层(用户代码)
  • 中间层(CMSIS)
  • 硬件层

HAL库简介

ST公司为了方便用户开发STM32芯片,提供了三种库:

  1. 标准外设库(Standard Peripheral Libraries)
  2. HAL库(硬件抽象层):Hardware Abstraction Layer
  3. LL库:Low Layer

直接操作寄存器:执行效率高,但时间成本高。
标准外设库:仅支持F0/1/2/3/4/L1,且目前已经停止维护。
HAL库:全系列兼容,ST目前主推的库,兼容性、易移植性,执行效率较低。
LL库:全系列兼容,与HAL库捆绑发布,轻量级,效率高,不匹配部分复杂外设。

获取STM32Cube固件包

STM32Cube固件包是ST公司根据CMSIS,制定的CMSIS Pack,不同公司推出的Pack是不一样的。

访问ST公司的官网:https://www.st.com/content/st_com/en.html
搜索STM32Cube
在这里插入图片描述

  • BSP:板级支持包,用于适配ST官方的开发板(可参考)。
  • CMSIS:符合CMSIS的组件,包括:DSP库、Cortex-M内核及其设备文件、微控制器专用头文件、启动文件、专用系统文件等。
  • STM32F1xx_HAL_Driver:HAL库外设驱动源码,包括F1系列HAL库源文件和头文件。

CMSIS文件夹关键文件

在这里插入图片描述
在这里插入图片描述
Device文件夹

  • stm32f1xx.h:是所有F1系列的顶层头文件,通过条件编译来包含某个芯片的头文件,定义通用的枚举类型,定义通用的宏定义。
  • stm32f103xe.h:包含:中断编号定义,外设寄存器结构体类型定义、寄存器映射、寄存器位定义、外设判断。
  • startup_stm32f103xe.s:大容量F103系列芯片的启动文件。
  • system_stm32f1xx.c/.h:定义了系统初始化函数SystemInit和系统时钟更新函数SystemCoreClockUpdate。

在这里插入图片描述

HAL库框架结构

在这里插入图片描述
HAL库文件介绍

  • hal.c/h:HAL库初始化、系统地点、HAL库延时等相关函数。
  • hal_conf.h:HAL库的用户配置文件,用于裁剪HAL库,配置晶振参数等。
  • hal_def.h:包含HAL库通用的枚举类型数据和宏定义
  • hal_cortex.h/c:内核通用函数定义和声明,如NVIC、MPU、系统软复位、systick等,主要是对core_cm3.h文件的相关函数再次封装。
  • ppp.c:任意外设驱动源码
  • ll_ppp.c:LL库驱动源码在hal_ppp.c或hal_ppp_ex.c中调用

如何使用HAL库

在这里插入图片描述

文章来源:https://blog.csdn.net/Caramel_biscuit/article/details/134940567
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。