stm32 hal 库组织分析
1. CMSIS 标准
2. HAL 库简介
上图是一个标准的 STM32F103 HAL 库的文件组织方式,至于其他芯片的组织方式其实是一模一样的。
基于寄存器方式的开发,实质上就是查找手册配置寄存器的过程,通过寄存器完成引脚的配置初始化和对应的操作。使用HAL库可以简化配置寄存器的过程,HAL 库借鉴面向对象的思想,将外设和引脚抽象为具有同样属性和操作的对象,定义数据类型和接口函数来描述片内外设,通过实例化数据和实现接口函数来操作引脚。
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 文件夹
该文件夹下面是一些其他组件,基本不使用。
stm32 hal 库组织分析相关推荐
- stm32 HAL库分析之CAN
stm32 HAL库分析之CAN 阻塞发送 HAL_StatusTypeDef HAL_CAN_Transmit(CAN_HandleTypeDef* hcan, uint32_t Timeout) ...
- STM32 HAL库 串口DMA(收发)和STM32串口中断接收(接收时间管理机制)+ESP8266 wifi模组通信问题
一.HAL库 串口 DMA+ESP8266模组通信问题 用STM32 HAL库串口的DMA发送和空闲中断接收处理数据,单片机发送AT指令给ESP8266 wifi模组问题:单片机连续几次给wifi模组 ...
- STM32 HAL库学习笔记4-SPI
STM32 HAL库学习笔记4-SPI 前言 一.SPI协议简介 SPI物理层 SPI协议层 1.基本通讯过程 2. 通讯的起始和停止信号 3. 数据有效性 4. CPOL/CPHA 及通讯模式 二. ...
- stm32+HAL库制作转速仪
stm32+HAL库制作转速仪 前言 电机在运行过程中,需要实时检测其转速的稳定性,有效反映电机的运行情况. 本文介绍了基于stm32的转速仪的设计,可以用光电门传感器和红外对管传感器测量,可以设置选 ...
- stm32 hal串口中断分析
stm32 hal串口中断分析 startup_stm32f103xe.s(115) : DCD USART1_IRQHandler USART1 ...
- STM32 HAL库 CubeMX教程(五)串口通信基础
STM32 HAL库 CubeMX教程(五)串口通信基础 串口通信简介 CubeMX配置 初始化程序分析 程序编写 参考文献 STM32 HAL库 CubeMX系列教程 目录 串口通信简介 UART: ...
- STM32 HAL库详解 及 手动移植
源: STM32 HAL库详解 及 手动移植
- STM32 HAL库、标准外设库、LL库(STM32 Embedded Software)
STM32 Embedded Software 工作以来一直使用ST的STM32系列芯片,ST为开发者提供了非常方便的开发库.到目前为止,有标准外设库(STD库).HAL库.LL库 三种.前两者都是常 ...
- STM32固件库文件分析
STM32固件库文件分析 1.汇编编写的启动文件 startup/stm32f10x.hd.s:设置堆栈指针,设置pc指针,初始化中断向量,配置系统时钟,对用c库函数_main最后去c语言世界里. 2 ...
最新文章
- ****CI框架源码阅读笔记7 配置管理组件 Config.php
- [转]C#中使用Monitor类、Lock和Mutex类来同步多线程的执行
- POJ-2251 Dungeon Master bfs搜索
- zzuli-1726:迷宫(语文功底题。。。)
- Lua中的loadfile、dofile、require详解
- 第一夜 主公说啥俺做啥
- Vue结合HTML5拖放API 实现目录拖拽~
- 面向对象 委托
- MySQL可视化工具推荐
- PHPExcel 插件使用详解
- 使用键盘操作将桌面计算机图标隐藏,windows7系统中怎么隐藏桌面图标提高工作效率保持桌面整洁...
- URL和URI的区别及理解
- MEMS传感器的下一轮技术变革
- Windows系统百宝箱
- 搜狗公众号爬虫学习系列一公众号的biz
- 原研哉:设计是什么?
- 限制性定语从句和非限制性定语从句的区别
- struts1 使用poi组件 读取excel文件,创建excel ,输出excel文件
- java 简易购物车
- Power bi 4.4 和弦图
热门文章
- 珍藏已久的三款国产优质软件,让你的电脑好用数倍不止
- STM32驱动TSL2561
- 未来取代微信的社交产品,或许是一个云服务的插件
- 长安大学计算机技术历年复试线,长安大学2011年-2013年研究生历年复试分数线汇总.xls...
- 编辑器之——Sublime Text3、Notepad++
- 在KVM虚拟机中使用spice
- TokenInsight 成功举办“首席对话首席”区块链行业论坛
- SBAC-US30 无法读取 SxS PRO X卡
- 【UE4 第一人称射击游戏】20-添加瞄准十字线
- TCP聊天室02 通信协议数据包的设计