【嵌入式学习笔记】嵌入式基础7——认识HAL库

嵌入式 - HAL介绍 嵌入式开发中的硬件抽象层(HAL)是一层软件,它从高层应用程序代码中抽象出微控制器或片上系统(SoC)的硬件细节。* 由于 HAL 对硬件的具体细节进行了抽象,因此相同的应用程序代码可以在不同的硬件平台上运行,只需做极少的改动。总之,硬件抽象层是嵌入式开发中的一个重要组成部分,它通过为各种硬件外设提供统一的接口,简化了硬件交互,增强了代码的可移植性,并加快了开发进程。这使得代码库的维护和更新更加容易。* 使用 HAL,相同的应用程序代码可在使用不同硬件平台的不同项目中重复使用,从而减少开发时间和工作量。 阅读详情

1.初识HAL库

1.1.CMSIS

CMSIS (微控制器软件接口标准):Cortex Microcontroller Software Interface Standard,是由ARM和与其合作的芯片厂商、软件工具厂商,共同制定的标准。
在这里插入图片描述

1.2.HAL库简介

  • 直接操作寄存器:执行效率高,时间成本高
  • 标准外设库 (Standard Peripheral Libraries):F0/F1/F3/F2/F4/L1,目前已停止维护
  • HAL库(Hardware Abstraction Layer):全系列兼容、ST主推的库、兼容性、易移植性、效率低
  • LL库(Low Layer):全系列兼容、与HAL库捆绑发布、轻量级、效率高、不匹配部分复杂外设

2.STM32Cube固件包浅析

在这里插入图片描述
重点是其中的Drivers文件夹,其中CMSIS和STM32F1xx_HAL_Driver最重要,下面依次讲解
在这里插入图片描述

3.CMSIS文件夹

该部分最重要的是Device和Include文件夹
在这里插入图片描述
Device文件夹主要文件如下:
在这里插入图片描述

Include文件夹下重要的文件如下:
cmsis_armcc.h、cmsis_armclang.h、cmsis_compiler.h、cmsis_version.h、core_cm3.h 、 mpu_armv7.h

4.HAL库框架结构(STM32F1xx_HAL_Driver)

  • Src(Source):外设驱动源码
  • Inc(Include):外设驱动源码头文件
    在这里插入图片描述

4.1.HAL库文件介绍

在这里插入图片描述

4.2.HAL库API函数和变量命名规则

在这里插入图片描述

4.3.HAL库对寄存器位操作的相关宏定义

在这里插入图片描述

4.4.HAL库回调函数

在这里插入图片描述
此类函数通常被_weak修饰(弱函数),允许用户重新定义该函数

5.HAL库开发的文件框架

基于CMSIS应用程序文件描述
在这里插入图片描述
CMSIS分级下的stm32f1的文件分布
在这里插入图片描述
HAL库的用户配置文件(stm32f1xx_hal_conf.h)

  • 裁剪HAL库外设驱动源码(不进行编译)
  • 设置外部高速晶振频率(根据开发板实际情况设置)
  • 设置外部低速晶振频率(根据开发板实际情况设置)
嵌入式系统设计(基于STM32CUBEMX和HAL库) 摘要:嵌入式系统是专用计算机系统,具有实时性、低功耗特点。STM32CubeMX是ST公司推出的图形化配置工具,可快速生成基于HAL库的初始化代码,简化STM32开发流程。HAL库提供统一API接口,封装底层操作,便于移植。两者结合可显著提升开发效率,但需注意性能开销和代码体积问题。开发环境安装需通过指定网盘获取安装包,按指引完成STM32CubeMX及芯片支持包的安装。 阅读详情

相关推荐

【嵌入式】基于HAL库的STM32F103C8T6移植uCOS

uCOS(Micro C/OS)是一款经典的实时操作系统(RTOS),由美国嵌入式系统专家Jean J. Labrosse开发和维护。它是一款基于优先级的可裁剪、高效、可移植的实时操作系统,适用于各种嵌入式系统的开发。2.1.1主要特点可裁剪性:uCOS可以根据实际需求进行裁剪,只包含所需的功能,避免资源浪费。高效性:uCOS具有快速的任务切换和响应时间,能够满足实时性要求。可移植性:uCOS支持多种硬件平台和编译器,使得应用可以方便地移植到不同的嵌入式系统上。

2301_79624689的博客 1135

HAL库介绍

HAL 库(Hardware Abstraction Layer,硬件抽象层)和标准库(Standard Peripheral Library,标准外设库,又称为 SPL)都是 STM32 微控制器的固件库。HAL属于驱动层,可以通过ST官方的CubeMX工具,通过HAL硬件抽象层接口就可以实现与中间层的第三方库耦合,进行添加和抽离。HAL库的优点很多,但缺点也比较明显,由于HAL库为了硬件做了很多兼容工作,对代码的健壮性做了很多处理,因此HAL库硬件的运行效率没有标准库那么高。

qq_25218501的博客 1万+

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记09:EEPROM

上一节我们学习了LCD转换,这节课学习一下EEPROM。学习EEPROM芯片之前要先学习一下它所使用的IIC协议,它通过这个协议和单片机进行通讯。一、IIC协议IIC是一个总线协议,它可以用于主器件与从器件之间交换数据使用。主器件就是我们所用的单片机了。IIC协议需要用到两根线,一根数据线,一根时钟线,不同于单总线协议只有一个I/O口。所以IIC可以提高通讯速率。IIC协议是一个通用的协议,有很多芯片都是用这个协议进行通讯的,EEPROM就是其中之一。

weixin_44800059的博客 2803

HAL 库

ST为了方便用户开发STM32ST最早的库,现在还在用目前只兼容系列目前已停止维护ST目前主推的库全系列兼容兼容性好、移植方便,但效率不太高Low Layer与HAL库困捆绑发布全系列兼容轻量级、效率高不匹配部分复杂外设,比如USB_htmresc:图片文件:STM32Cube说明文档Drivers:驱动源码:中间文件Projects:ST官方开发板案例Utilities:公共组件其他文件License.md:软件版权信息:固件包版本信息。

zhexiangsi的博客 7128

STM32F7基于HAL库的高效工程模板

STM32F7系列微控制器是STMicroelectronics推出的高性能ARM Cortex-M7微控制器家族成员,旨在为要求严格的嵌入式应用提供高计算能力和扩展性。其核心特性包括:高效节能的架构、高速缓存和数字信号处理器(DSP)指令,以及广泛的I/O端口和外设接口。随着物联网(IoT)和工业自动化的发展,STM32F7以其强大的处理能力和丰富的周边设备,成为了推动现代嵌入式系统发展的关键力量。

weixin_42513209的博客 847

有关cmsis-armcc.h等文件

有关cmsis文件,解决编译报错问题 cmsis_armcc.h cmsis_armclang.h cmsis_compiler.h cmsis_version.h

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

STM32之HAL库1 STM32的三种开发方式一、直接配置寄存器二、标准库三、HAL库2 HAL库固件库安装与 用户手册1.首先设置让Cube可以自动联网下载相关固件库2.根据芯片选择所需固件3.寻找用户帮助手册3 STM32 HAL库与标准库的区别_浅谈句柄、MSP函数、Callback函数3.1.句柄3.2.MSP函数3.3.Callback函数4 STM32 HAL库结构(1) 外设句柄定义(2) 三种编程方式(3)三大回调函数 原文链接:https://blog.youkuaiyun.com/xuzhexin

宁静致远的博客 6771

cmsis_armcc_V6.h

CMSIS Cortex-M Core Function/Instruction Header File

HAL库是什么,HAL库的定义

HAL是 Hardware Abstraction Layer 的缩写,中文名:硬件抽象层。HAL 库是 ST 为 STM32 最新推出的。

weixin_62488241的博客 1万+

模拟IC设计笔记:拆解一个经典的时钟占空比校正(DCC)电路模块,从理论到SPICE仿真

本文深入解析了时钟占空比校正(DCC)电路在模拟IC设计中的关键作用,特别是在高速ADC应用中。通过晶体管级拆解,详细介绍了基于电荷泵和积分器的模拟反馈型DCC电路设计,包括占空比检测、误差放大与校正执行单元的实现。文章还提供了SPICE仿真验证方法,确保电路在100MHz时钟下的稳定性和性能。

weixin_33725722的博客 424

永磁同步电机定子槽型设计实战:从梨形槽到矩形槽的NVH优化之路

本文深入探讨了永磁同步电机定子槽型设计在NVH优化中的关键作用,对比了梨形槽与矩形槽的性能差异。通过Ansys Maxwell仿真和实际案例,揭示了矩形槽在提升槽满率、降低电磁噪声方面的优势,并总结了五大设计黄金法则,为电机设计工程师提供了实用指导。

weixin_28740299的博客 492

STM32之CubeMX学习笔记(1)什么是CubeMX 什么是HAL库

STM32之CubeMX学习笔记(1)CubeMX&HAL库介绍CubeMX介绍HAL库介绍初步使用感受 CubeMX介绍 STM32用的CubeMX是ST公司出品的一款C代码生成器软件,它的图形化工具界面可以让使用者可视化地选择所需的芯片,并设置选用任一引脚、任一外设。另外的,CubeMX还提供了自动识别引脚冲突、设置时钟树、功耗预测等功能。使用CubeMX能减轻底层开发工作量,节约时间。 HAL库介绍 CubeMX生成的代码使用的并不是32单片机的标准库,而是使用的HAL库。HAL,是英文Har

地主保长的博客 1万+

Win10和Ubantu16.04双系统下,卸载Ubantu

Win10和Ubantu16.04双系统下,卸载Ubantu 机器配置 华硕主板,英伟达显卡(这不是重点) Win10与Ubantu16.04均为UFFI分区(如果不知道这个也不需要在意,一般默认的都是这样,鸵鸟原则) 清除Ubantu系统 一般按照常规的方法来删除Ubantu,都是直接将磁盘管理器里面的关于Ubantu的磁盘清空,但是还会留下一个UFFI分区,如果不进行删除的话,开机时候还是会有...

qq_33289694的博客 390

【STM32H7教程】第91章 STM32H7的FDCAN总线基础知识和HAL库API

完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第91章 STM32H7的FDCAN总线基础知识和HAL库API 本章节为大家讲解FDCAN的基础知识和对应的HAL库API。CAN FD中的FD含义就是flexible data,灵活数据通信,且波特率可以和仲裁阶段波特率不同 目录 91.1 初学者重要提示 91.2 FDCAN基础知识 91.2.1 CAN FD协议介绍 91.2.2 CAN...

Simon223的博客 6059

18、改进的LSTM用于污染物浓度预测

本文探讨了改进的长短期记忆网络(MLSTM)在空气污染预测中的应用,重点分析了其对印度泰米尔纳德邦五个城市(金奈、塞勒姆、哥印拜陀、马杜赖和图蒂科林)的PM2.5、PM10、SO2和NO2四种污染物浓度的预测效果。通过与传统LSTM模型的对比实验,结果显示MLSTM在预测准确性和执行效率方面均优于LSTM。研究结果表明,MLSTM在空气质量预测领域具有较高的应用潜力,可为环境保护和空气质量管理提供有力支持。

j0k1l2m3n的博客 174

cuRobo 入门教程(一)基于CUDA的机器人运动规划加速库

cuRobo是一款基于CUDA加速的机器人算法库,提供运动学计算、碰撞检测、轨迹优化等功能。该库采用并行优化技术,在GPU上实现高效运算,比现有方案快60倍。cuRobo支持多种机器人模型和环境表示,包含正向/逆向运动学、无碰撞轨迹生成、模型预测控制等核心算法,并可与IsaacSim等仿真平台集成。其特点包括:1) 支持多种碰撞检测方式(长方体/网格/深度图像);2) 提供批量环境处理和实时世界更新;3) 通过CUDA Graphs加速优化迭代;4) 在Jetson Orin等平台实现毫秒级运动规划。安装支

2506_90492529的博客 1924

【蓝桥杯嵌入式组】HAL库STM32CubeMx学习笔记一:软件安装

以蓝桥杯嵌入式组各年的考点为例,讲解HAL库STM32CubeMx的使用和客观题的答案与解析,并带有配套的例程。

weixin_46098396的博客 3591

GD32F470移植LWIP协议,PHY芯片DP83848I

也就是说前24位是有规定的,其中48位MAC中的前几位也是有着对应的含义的。2、旧版LWIP(如1.4.1)存在DHCP状态机卡死问题,建议升级至2.1.3+。

m0_61973119的博客 1587

HAL库 嵌入式

在网络通信中,“PHY”指的是物理层设备(Physical Layer Transceiver),它负责实现数据链路层与物理媒介之间的接口。PHY芯片主要用于处理电信号的发送和接收,确保数据能够在物理网络媒介(如铜缆、光纤或无线电波)上进行传输。例如,在以太网应用中,PHY芯片负责将数字信号转换成适合在双绞线电缆上传输的电信号,以及执行信号的接收和条件调整(如放大、滤波、数据恢复等)。这种芯片通常与网络接口卡(NIC)或集成到网络设备(如路由器、交换机)中。你提到的“根据PHY_TYPE。

波波诸葛伟 1315

Simulink开发项1000例实战专栏--实例64:基于Simulink构建一个储能系统模型

通过引入储能系统,太阳能电站能够实现在白天储存多余的能量,在夜晚释放能量,平滑负荷曲线,提高电网的稳定性和可靠性。本项目的目标是基于Simulink平台,构建一个完整的储能系统模型,并通过仿真验证其在电网调峰中的应用效果。通过引入储能系统,工业园区能够实现在负荷高峰期释放能量,在负荷低谷期储存能量,平滑负荷曲线,降低用电成本,提高电网的稳定性和可靠性。通过引入储能系统,风力发电场能够实现在负荷高峰期释放能量,在负荷低谷期储存能量,平滑负荷曲线,提高电网的稳定性和可靠性。

xiaoheshang_123的博客 514

LPDDR6与LPDDR5 ZQ Calibration技术探讨

LPDDR6与LPDDR5 ZQ Calibration技术探讨

zilan23的博客 1096

嵌入式入门:STM32 HAL 库 API 的理解与实战(附代码示例)

STM32 HAL库API入门指南 本文介绍了STM32 HAL库API的基本概念、原理及实际应用。API作为ST公司封装好的库函数,简化了底层寄存器操作,提升开发效率。文章通过GPIO、串口和定时器三个典型场景,展示了HAL库API的实际使用方法,并比较了其优缺点(开发效率高但代码体积大)。学习建议包括查阅官方文档、参考例程和动手实践。HAL库API虽数量庞大,但无需死记硬背,通过CubeMX工具配合实践可快速掌握基本外设控制。

hchdkcha的博客 2784

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

STM32F407HAL库基础

本文主要介绍关于STM32F4HAL库的使用,并以此作为题引开启对于stm32HAL库的入门知识讲解。本文章作为stm32学习的导入部分,首先是为大家介绍CubeMX的安装与配置,以及Keil5的安装工作,并通过简单的点灯操作让大家快速了解GPIO外设功能的配置选择,另外做出相应扩展,为大家介绍点灯操作的一些扩展功能。通过本次学习,初学者们可以初步体会到HAL库配置的方便之处,并能从中有所收获。

2301_80682895的博客 1623

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

STM32 HAL 库学习笔记:从概念到移植性解析

摘要: HAL库是ST官方为STM32系列设计的硬件抽象层库,通过屏蔽底层硬件细节(如寄存器操作),提供统一API接口(如HAL_GPIO_Init()),显著提升代码可移植性和开发效率。与标准库相比,HAL库采用分层设计(应用层-HAL层-芯片适配层),实现跨STM32系列的无缝移植,用户代码仅需调用标准化接口,硬件差异由适配层处理。其核心优势在于抽象化、标准化和低耦合,但存在代码体积大、效率略低等缺点。建议开发者结合CubeMX工具快速入门,逐步深入底层机制以平衡开发效率与性能优化。适用于多平台、团队协

hchdkcha的博客 1524

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

STM32HAL库基础学习笔记

本文记录了使用STM32CubeMX配置HAL库开发STM32F103C8T6的过程。主要内容包括:1.新建工程配置GPIO引脚(PC13和PA9)为推挽输出模式;2.设置引脚初始电平(PC13高电平点亮,PA9低电平熄灭);3.使用HAL_GPIO_WritePin函数控制LED闪烁;4.代码调试方法及错误排查;5.对比HAL库与标准库的操作差异。文章还建议初学者可使用仿真软件进行前期学习,并指出HAL库相比标准库在时钟配置等方面更为简便。

d111111111d的博客 1460

初始HAL库

HAL 库关键文件介绍如下表所示,表中 ppp 代表任意外设。以上是 HAL 库最常见的文件的列表,在 Src/Inc 下面还有 Legacy 文件夹,用于特殊外设 的补充说明。使用较少不做说明不止文件命名有一定规则,stm32f1xx_hal_ppp (c/h)中的函数和变量命名也严格按照命名 规则,如表所示的命名规则在大部分情况下都是正确的:对于 HAL 的 API 函数,常见的有以下几种:•初始化/反初始化函数•外设读写函数•控制函数•状态和错误。

hdktq的博客 980
上一篇: 【嵌入式学习笔记】嵌入式基础6——STM32基础知识
下一篇: 【嵌入式学习笔记】嵌入式基础8——STM32CubeMX
Sunny_Coder
博客等级 码龄7年 124粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值