自从ST公司推出HAL库来替代原有的标准库,HAL库开始慢慢的被广大STM32开发者所接受,现在已经在实际的项目开发中大量使用,HAL库使得项目的移植变得简单容易,但是对于初学者而言,刚开始接触有些晦涩难懂。

本文将详细介绍HAL库的目录结构和功能。


1.1 HAL库下载

  • STM HAL库可以从官方下载(下载链接),展开MCU固件一栏选项。或者从CSDN下载

  • 点击STM32CubeF1_软件开发包,当前最新版本是v1.8.0

  • 进入下载页面,点击立即下载,需要登录账号才能下载


1.2 HAL库说明

HAL库下载解压后的目录

  • Documentation:文件夹下是HAL库帮助文档
  • Drivers:文件夹下是官方的CMSIS库,HAL库,板载外设驱动
  • Middlewares:中间组建
  • Projects:文件夹下是用驱动库写的针对官方发行 demo 板的例子和工程模板。
  • Utilities:实用的公共组件
  • Release_Notes.html:库的版本更新说明

1.2.1 CMSIS文件说明

  • Include文件夹:内核相关头文件,该文件夹含有核内设备层函数的Cortex-M核通用的头文件,这些文件是为了那些实用Cortex-M核设计的SOC的芯片产商设计的芯片提供提供一个进入内核的接口。
  • Device文件夹:该文件夹放的是具体的芯片直接相关文件,包含启动文件、芯片外设寄存器定义、系统时钟初始化的一些文件,由ST公司提供。
  • Core:Cortex-M内核相关文件
  • DSP:DSP函数源文件
  • RTOS:实时操作系统头文件

几个重要的文件:

  • system_stm32f1xx.c文件:

文件目录:\STM32Cube_FW_F1_V1.8.0\Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates

文件包含了STM32芯片上电后初始化系统时钟、扩展外部存储器用的函数,根据需要编辑该文件

  • 启动文件

文件目录:\STM32Cube_FW_F1_V1.8.0\Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates

该目录下,包含了"arm","gcc'',"iar"等,这些文件夹下包含了对应编译平台的汇编启动文件

  • stm32F103xx.h文件

文件目录:STM32Cube_FW_F1_V1.8.0\Drivers\CMSIS\Device\ST\STM32F1xx\Include

该文件非常重要,是一个STM32芯片底层相关文件,包含了STM中所有的外设寄存器地址和结构体类型定义,在会用HAL库的地方都要包含这个头文件。

  • stm32f1xx_it.c文件

文件目录:STM32Cube_FW_F1_V1.8.0\Projects\STM32F103RB-Nucleo\Templates\Src

该文件用来专门编写终端服务函数的,这个文件已经定义了一些系统异常的接口,其他普通终端服务函数由我们自己添加。

  • stm32f1xx_hal_conf.h文件

文件目录:STM32Cube_FW_F1_V1.8.0\Projects\STM32F103RB-Nucleo\Templates\Inc

该文件被包含在stm32f103xx.h文件,可以使用这个文件根据芯片型号增减ST库的外设文件,时钟源也是在这里配置的。

1.2.2 STM32F1xx_ HAL _Driver 文件夹

文件目录:STM32Cube_FW_F1_V1.8.0\Drivers\STM32F1xx_HAL_Driver

STM32F1xx_HAL_Driver 文件夹下有inc和src文件夹,在文件夹里的就是ST公司针对每个STM32外设编写的库函数文件,每个外设对应一个.c和.h后缀的文件。我们把这类外设文件统称为:stm32f1xx_hal_ppp.c 或 stm32f1xx_hal_ppp.h文件,PPP 表示外设名称。


最后是HAL库各文件之间的调用关系,熟记此图对理解HAL很重要

STM32 HAL库详细介绍相关推荐

  1. STM32 HAL库学习笔记2 HAL库介绍

    STM32 HAL库学习笔记2 HAL库介绍 CMSIS标准 一.再次认识HAL库 HAL库设计思想 HAL库实现方式 以GPIO模块为例 GPIO外设数据类型 GPIO外设接口函数 二.使用HAL库 ...

  2. 【08】STM32·HAL库开发-HAL库介绍 | STM32Cube固件库介绍 | HAL库框架结构 | 如何使用HAL库及使用注意事项

    目录 1.初识HAL库(了解) 1.1CMSIS简介 1.2HAL库简介 2.STM32Cube固件包浅析(了解) 2.1如何获取STM32Cube固件包? 2.2STM32Cube固件包文件夹简介 ...

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

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

  4. STM32 HAL库学习笔记1-HAL库简介

    STM32 HAL库学习笔记1-HAL库简介 HAL库 SPL 库 和 HAL 库两者相互独立,互不兼容.几种库的比较如下 目前几种库对不同芯片的支持情况如下 ST 中文官网上有一篇<关于ST库 ...

  5. STM32 HAL库 驱动 MT6701 磁编码器

    写在前面: MT6701 是 MagnTek 推出的新一代基于差分霍尔感应原理的磁性角度编码器芯片.值得一提的是 MT6701不仅提供 0~360° 的角度信号,而且还提供了一个"按压&qu ...

  6. STM32 HAL库组成概述

    STM32 HAL库概述 ## (一)HAL库设计思想 什么是HAL(Hardware Abstraction Layer)? from 百度百科: 硬件抽象层是位于操作系统内核与硬件电路之间的接口层 ...

  7. STM32 HAL库PID控制电机 第三章 PID控制双电机

    STM32 HAL库PID控制电机 第三章 PID控制双电机 注:本文含全部PID控制代码,保证可以运行,如不能运行可以留言回复 1 基础配置 1.1 编码器电路图及配置 引脚 定时器通道 PA0 T ...

  8. 温湿度传感器驱动SHT85 单片机STM32 HAL库

    功能介绍:读取传感器SHT85数据,转换成温度.湿度 .饱和水蒸气含量. 注意事项: SDA脚设置为开漏输出,外部上拉电阻10k.或者设置成推挽,软件切换SDA输入输出. 调试时可适当加长延时时间. ...

  9. STM32 HAL库详解

    STM32 HAL库整体总结 STM32 之二 HAL库详解 及 手动移植 本篇博客是对以上参考资源的一个二次总结与整理. 1. HAL库文件结构 对于开发人员而言,首先要清楚 HAL 库的文件结构. ...

最新文章

  1. 在做项目中遇到的JS问题
  2. 11.32 php扩展模块装安
  3. Android接收短信-createFromPdu
  4. 腾讯地图调用获取经度纬度代码
  5. 教你10分钟对接人大金仓EF Core 6.x
  6. JAVA基础知识+基础代码
  7. vs2015web项目无法加载64位c++的dll,提示试图加载不正确的格式
  8. python中的面向对象:类与对象(重点!!!)
  9. 【CentOS】NFS服务器的安装与配置
  10. python 代码替换_用Python将绝对URL替换成相对URL的代码
  11. chanlist.php,Nginx+FastCgi+Php 的工作机制
  12. DevOps、CI、CD是什么关系
  13. python开发桌面时钟_python+PyQT实现系统桌面时钟
  14. HTML5 之 Link 标签
  15. 北京春运更智能:自助验票、微信查询
  16. 漫话:如何给女朋友解释什么是CDN?
  17. Python列表、元组、字典 集合简单基础
  18. java 二维码生成和加密base64压码
  19. 行云管家V4.9正式发布:监控全面提升,首页、主机详情大幅优化,新增大量实用功能...
  20. 按钮置灰后点击事件仍可以触发

热门文章

  1. C/C++编程学习 - 第4周 ⑦ 判断是否为两位数
  2. 支持GIF动画的ImageView
  3. HTML基于Vue实现Cron生成器
  4. 【KVM相关】kvm虚拟化部署配置
  5. 银行HR讲述实习生转正故事:寒门真的再难出贵子
  6. 【Jquery-03】jq中的样式操作
  7. 大学计算机基础教学大纲,大学计算机基础教学大纲
  8. ubuntu解压rar文件
  9. Android集成友盟推送功能
  10. 常见的网络状态码(HTTP状态码)