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 库组织分析相关推荐

  1. stm32 HAL库分析之CAN

    stm32 HAL库分析之CAN 阻塞发送 HAL_StatusTypeDef HAL_CAN_Transmit(CAN_HandleTypeDef* hcan, uint32_t Timeout) ...

  2. STM32 HAL库 串口DMA(收发)和STM32串口中断接收(接收时间管理机制)+ESP8266 wifi模组通信问题

    一.HAL库 串口 DMA+ESP8266模组通信问题 用STM32 HAL库串口的DMA发送和空闲中断接收处理数据,单片机发送AT指令给ESP8266 wifi模组问题:单片机连续几次给wifi模组 ...

  3. STM32 HAL库学习笔记4-SPI

    STM32 HAL库学习笔记4-SPI 前言 一.SPI协议简介 SPI物理层 SPI协议层 1.基本通讯过程 2. 通讯的起始和停止信号 3. 数据有效性 4. CPOL/CPHA 及通讯模式 二. ...

  4. stm32+HAL库制作转速仪

    stm32+HAL库制作转速仪 前言 电机在运行过程中,需要实时检测其转速的稳定性,有效反映电机的运行情况. 本文介绍了基于stm32的转速仪的设计,可以用光电门传感器和红外对管传感器测量,可以设置选 ...

  5. stm32 hal串口中断分析

    stm32 hal串口中断分析 startup_stm32f103xe.s(115) :                 DCD     USART1_IRQHandler        USART1 ...

  6. STM32 HAL库 CubeMX教程(五)串口通信基础

    STM32 HAL库 CubeMX教程(五)串口通信基础 串口通信简介 CubeMX配置 初始化程序分析 程序编写 参考文献 STM32 HAL库 CubeMX系列教程 目录 串口通信简介 UART: ...

  7. STM32 HAL库详解 及 手动移植

    源: STM32 HAL库详解 及 手动移植

  8. STM32 HAL库、标准外设库、LL库(STM32 Embedded Software)

    STM32 Embedded Software 工作以来一直使用ST的STM32系列芯片,ST为开发者提供了非常方便的开发库.到目前为止,有标准外设库(STD库).HAL库.LL库 三种.前两者都是常 ...

  9. STM32固件库文件分析

    STM32固件库文件分析 1.汇编编写的启动文件 startup/stm32f10x.hd.s:设置堆栈指针,设置pc指针,初始化中断向量,配置系统时钟,对用c库函数_main最后去c语言世界里. 2 ...

最新文章

  1. ****CI框架源码阅读笔记7 配置管理组件 Config.php
  2. [转]C#中使用Monitor类、Lock和Mutex类来同步多线程的执行
  3. POJ-2251 Dungeon Master bfs搜索
  4. zzuli-1726:迷宫(语文功底题。。。)
  5. Lua中的loadfile、dofile、require详解
  6. 第一夜 主公说啥俺做啥
  7. Vue结合HTML5拖放API 实现目录拖拽~
  8. 面向对象 委托
  9. MySQL可视化工具推荐
  10. PHPExcel 插件使用详解
  11. 使用键盘操作将桌面计算机图标隐藏,windows7系统中怎么隐藏桌面图标提高工作效率保持桌面整洁...
  12. URL和URI的区别及理解
  13. MEMS传感器的下一轮技术变革
  14. Windows系统百宝箱
  15. 搜狗公众号爬虫学习系列一公众号的biz
  16. 原研哉:设计是什么?
  17. 限制性定语从句和非限制性定语从句的区别
  18. struts1 使用poi组件 读取excel文件,创建excel ,输出excel文件
  19. java 简易购物车
  20. Power bi 4.4 和弦图

热门文章

  1. 珍藏已久的三款国产优质软件,让你的电脑好用数倍不止
  2. STM32驱动TSL2561
  3. 未来取代微信的社交产品,或许是一个云服务的插件
  4. 长安大学计算机技术历年复试线,长安大学2011年-2013年研究生历年复试分数线汇总.xls...
  5. 编辑器之——Sublime Text3、Notepad++
  6. 在KVM虚拟机中使用spice
  7. TokenInsight 成功举办“首席对话首席”区块链行业论坛
  8. SBAC-US30 无法读取 SxS PRO X卡
  9. 【UE4 第一人称射击游戏】20-添加瞄准十字线
  10. TCP聊天室02 通信协议数据包的设计