stm32 hal 库组织分析

1. CMSIS 标准

cortex microcontroller soft interface strandup.png

2. HAL 库简介

20211124130043.jpg
上图是一个标准的 STM32F103 HAL 库的文件组织方式,至于其他芯片的组织方式其实是一模一样的。

基于寄存器方式的开发,实质上就是查找手册配置寄存器的过程,通过寄存器完成引脚的配置初始化和对应的操作。使用HAL库可以简化配置寄存器的过程,HAL 库借鉴面向对象的思想,将外设和引脚抽象为具有同样属性和操作的对象,定义数据类型和接口函数来描述片内外设,通过实例化数据和实现接口函数来操作引脚。
20210327100125884.png

3. HAL 库文件组织分析

3.1. _htmresc 文件夹

这个文件夹存放的是一些库相关的图片和网站的资料,一般没有作用。

3.2. Documentation 文件夹

该文件夹用于存放 STM32CubeF1 的英文说明文档。

3.3. Drivers 文件夹

Dreivers 文件夹下有如下几个子文件夹,BSP 文件夹,CMSIS 文件夹,STM32F1xx_HAL_Driver 文件夹。

3.3.1 BSP 文件夹

该文件夹也叫板级支持包,该包提供的是直接与硬件打交道的 API,如触摸屏,LCD,SRAM 以及EEPROM 等板载硬件资源驱动。该文件夹中还有多种 ST 官方 Discovery 开发板,Nucleo 开发板以及 EVAL 板的硬件驱动 API 文件,如果要编写相关的硬件驱动,可以参考这些文件夹中的程序。

3.3.2 CMSIS 文件夹

该文件夹内包含的是符号 CMSIS 标志的软件抽象层组件的相关文件。主要包括 DSP 库(DSP_LIB文件夹),Cortex-M内核及其设备文件(Include文件夹),微控制器专用头文件/启动代码/专用系统文件等(Device文件夹)。

3.3.3 STM32F1xx_HAL_Driver 文件夹

该文件夹包含了所有的 STM32F1xx 系列 HAL 库头文件和源文件,也就是所有底层硬件抽象层API声明和定义。它的作用是屏蔽了复杂的硬件寄存器操作,统一了外设的接口函数。该文件夹包含 Src 和 Inc 两个子文件夹,其中 Src 子文件夹存放的是 .c 源文件,Inc 子文件夹存放的是与之对应的 .h 头文件。每个 .c 源文件对应一个 .h 头文件。文件夹中源文件名称基本遵循 stm32f1xx_hal_ppp.c 定义格式,头文件名称基本遵循stm32f1xx_hal_ppp.h (ppp 表示外设的缩写) 定义格式。这个文件夹是开发过程中正真需要使用的,用来驱动芯片的相关外部设备。

3.4. Middlewares 文件夹

如果做基本的开发,该文件夹使用频率不高。Middlewares 文件夹中包含了 ST 和 Third_Party 两个子文件夹,它们的内容如下:
ST\STemWim 文件夹:存放的是 STemWin 工具包。
ST\STM32_TouchSensing_Library 文件夹:存放的是 STM32 电容触摸支持包。
ST\STM32_USB_Device_Library 文件夹:USB 从机设备支持包。
ST\STM32_USB_Host_Library 文件夹:USB 主机设备支持包。
Third_Party\FatFs 文件夹:FAT 文件系统支持包。
Third_Party\FreeRTOS 文件夹:FreeRTOS 实时系统支持包。

3.5. Projects 文件夹

该文件夹存放的是一些可以直接编译的实例工程。每一个文件夹对应一个 ST 官方的 Demo 板,通过上面的介绍可以看出在 STM32CubeF1 固件包中用到的就 Drivers,Projects 文件夹中的文件。

3.6. Utilities 文件夹

该文件夹下面是一些其他组件,基本不使用。

评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值