Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >STM32之HAL、LL和标准库

STM32之HAL、LL和标准库

作者头像
跋扈洋
发布于 2023-09-02 02:24:44
发布于 2023-09-02 02:24:44
7.6K0
举报
文章被收录于专栏:物联网知识物联网知识

引言

我们在进行STM32开发的时候,使用寄存器进行开发的终究是少数,大多数人还是习惯用库函数进行开发。到目前为止,有标准外设库、HAL库、LL库 三种。本文将分别介绍以下三种库,便于大家区分。

介绍

标准库

标准库(Standard Peripheral Library)是STMicroelectronics提供的最基本的库。它提供了对STM32微控制器的底层寄存器和外设的直接访问。标准库的设计目标是提供高度灵活性和低层次的硬件控制,以满足对性能和资源的严格要求。使用标准库,开发人员可以直接操作寄存器来配置和控制微控制器的功能,但需要手动编写大量的底层代码。标准库适用于对性能要求较高的应用和对代码大小和效率有严格要求的项目。

HAL库

HAL库(Hardware Abstraction Layer)是STMicroelectronics为了提供更高级别的抽象和简化开发而引入的库。HAL库基于标准库,并提供了一组API函数,将底层硬件操作抽象为高级函数调用。这样,开发人员可以使用更高级别的API函数来进行配置和控制微控制器的功能,而不需要直接操作底层寄存器。HAL库提供了一种更易用和可移植的编程模型,并减少了编写底层代码的工作量。它还支持多种开发板和外设,提供了一致的接口,简化了代码移植和复用。HAL库适用于大多数应用程序,尤其是中等复杂性的项目。

LL库

LL库(Low-Level Library)是STMicroelectronics在HAL库的基础上提供的更低级别的库。LL库提供了对底层寄存器和外设的更直接的访问,并提供了一组低级别的API函数。LL库保留了更多的硬件细节,为开发人员提供了更高级别的灵活性和控制。使用LL库,开发人员可以直接编写更底层的代码,实现对微控制器和外设的精细控制。LL库适用于对性能和资源要求极高,以及对底层硬件控制有特殊需求的应用。

三者的关系

在这三种库中,出现的先后顺序是标准库—HAL库—LL库,所以大家如果在网上 看到LL库编写的程序,大概是不久完成的,看到标准库,可能就是稍早一些时候的了。 这几种库的比较官方介绍如下图:

HAL库虽然移植性最好,但问题也最多。比如在串口收发的时候,由于HAL库中的中断接收和串口发送使用的互斥锁是一个,所以会造成好好的全双工变成了半双工。而标准库和LL库都没有这个问题。诸如此类的问题还有很多,但HAL库确实开发效率最高。具体使用效果因人而异吧。

总结

ST提供的标准库、HAL库和LL库各有其优势和特点,如果是移植很久前的项目,大概率要使用标准库。如果新开发项目,使用STM32CubeMX就必须使用HAL库和LL库了。个人建议,现在最好是使用HAL库+LL库进行开发,因为这是官方主推的库,并且CubeMX确实是个很好用的工具,而里面只有HAL库和LL库。HAL库开发迅速,LL库开发稳定,大家可以结合着用。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-06-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 物联网知识 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
stm32编程入门书籍_STM32开发板
STM32系列专为要求高性能、低成本、低功耗的嵌入式应用设计的ARM Cortex®-M0,M0+,M3, M4和M7内核,按内核架构分为不同产品:主流产品(STM32F0、STM32F1、STM32F3)、超低功耗产品(STM32L0、STM32L1、STM32L4、STM32L4+)、高性能产品(STM32F2、STM32F4、STM32F7、STM32H7)。
全栈程序员站长
2022/10/04
1.6K0
stm32编程入门书籍_STM32开发板
STM32开发应选择标准库还是HAL库?
选择在STM32开发中使用标准库还是硬件抽象层库,主要取决于项目的需求、开发人员的经验以及开发效率的要求。
不脱发的程序猿
2025/02/03
7400
STM32开发应选择标准库还是HAL库?
stm32微控制器开发者的福音
因为它的创新,单片机的使用变得越来越简单了,甚至没接触过硬件的看手册也能很快掌握。它首创的提供了库函数操作所有的寄存器。是NXP,飞思卡尔,51单片机,msp430单片机,Atemel的AVR单片机,MICROCHIP的PIC单片机无法比拟的。
杨永贞
2020/08/04
1.1K0
【STM32】“stm32f10x.h” 头文件的作用
stm32f10x.h 是 STM32F10x 系列微控制器的标准外设库的一个头文件。它的作用包括:
LuckiBit
2024/12/11
7950
【STM32】HAL库 STM32CubeMX教程十一—DMA (串口DMA发送接收)
前言: 本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用
全栈程序员站长
2022/06/29
6.1K0
【STM32】HAL库 STM32CubeMX教程十一—DMA (串口DMA发送接收)
stm32相关知识_STM32单片机介绍
概括一下我没有摘录的部分,就是STM32有着各种优势,是从事嵌入式行业的朋友的好伙伴。以我作为一个电子系学生的经验,主要用到的就是F1和F4,后者较前者的区别就是多了一个FPU (Float Point Unit,浮点运算单元) 处理浮点数的速度也就会更快。
全栈程序员站长
2022/10/04
7730
stm32相关知识_STM32单片机介绍
别纠结了!一文搞懂HAL库是什么及如何使用
  相比较早几年使用标准库开发来讲,最近几年HAL库的使用是越来越多,那么我们开发应当使用哪一种呢,本文小飞哥着重介绍常用的几种开发方式及相互之间的区别,白猫也好、黑猫也好,抓到耗子就是好猫。
用户8913398
2021/08/16
23.5K0
别纠结了!一文搞懂HAL库是什么及如何使用
STM32入门培训
比如智能家居、智慧农业、工厂自动化这些,都可以使用STM32作为主控制器或者辅助控制器。
小锋学长生活大爆炸
2021/04/30
4K0
万字长文解读STM32-1
你懂精通ARM的含金量吗?你懂精通STM32的含金量吗?不管懂不懂都要懂,赶紧学。
云深无际
2023/05/24
1.5K0
万字长文解读STM32-1
【STM32】HAL库 STM32CubeMX教程三—-外部中断(HAL库GPIO讲解)
上一节我们讲解了STM32CubeMX的基本使用和工程的配置,那么这一节我们正式来学习CubeMX配置STM32的各个外设功能了
全栈程序员站长
2022/06/30
2.5K0
【STM32】HAL库 STM32CubeMX教程三—-外部中断(HAL库GPIO讲解)
STM32F103系列开发_点亮LED灯
STM32目前市面上使用比较广泛,资料多,接下来就介绍如何快速入门STM32,进行基础开发。
DS小龙哥
2024/05/24
3840
STM32F103系列开发_点亮LED灯
【STM32】HAL库 STM32CubeMX教程十二—IIC(读取AT24C02 )
本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用
全栈程序员站长
2022/06/27
5K0
【STM32】HAL库 STM32CubeMX教程十二—IIC(读取AT24C02 )
STM32与HC-08蓝牙模块:基于HAL库的无线通信实现
HC-08是一款基于蓝牙4.0 (BLE) 标准的串口透传模块,因其成本低廉、体积小巧、使用简单而广泛应用于物联网(IoT)、无线数据采集、遥控等场景。它允许STM32等微控制器通过标准的UART接口,以无线方式与支持BLE的设备(如手机、平板)进行双向数据传输。本文将指导您如何利用STM32强大的HAL库(Hardware Abstraction Layer)高效地完成HC-08的驱动开发。
技术文章分析
2025/08/07
1740
STM32Cube-01 | 初识 STM32 Cube 生态系统
STM32Cube是ST公司开发的一套生态系统,致力于使STM32的开发变的更简单,并且100%开源免费。
Mculover666
2020/07/16
1.2K0
STM32Cube-01 | 初识 STM32 Cube 生态系统
keil软件下载安装使用(STM32篇)
Keil软件是一款专为嵌入式系统开发设计的集成开发环境(IDE),由德国Keil公司创立,后被ARM公司收购并持续更新维护。它集成了代码编辑、编译、调试和项目管理等功能,广泛应用于各类单片机的程序开发,尤其是基于ARM Cortex-M内核的微控制器(如STM32系列)以及传统的8051单片机。Keil的核心组件包括μVision IDE、针对不同架构的编译器(如ARMCC用于ARM芯片,C51编译器用于8051)、调试工具和丰富的中间件库,为开发者提供了一站式的开发体验。
DS小龙哥
2025/05/29
1.5K0
keil软件下载安装使用(STM32篇)
ESP32与STM32哪种更适合初学者?
无论是刚入坑的小白,还是想扩展技术栈的老鸟,在选择主力 MCU 时,学习曲线绝对是重要的考量因素。
不脱发的程序猿
2025/04/13
7850
ESP32与STM32哪种更适合初学者?
stm32cubemx软件库_STM32cube
前言: 本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用
全栈程序员站长
2022/09/28
9620
stm32cubemx软件库_STM32cube
基于STM32的定时器使用介绍(HAL库)
本文旨在介绍如何使用STM32CubeMX配置+KEIL 5开发一个每10us定时器中断触发一次的项目。帮助初学者入门STM32的定时器使用。
跋扈洋
2023/09/02
1.4K0
基于STM32的定时器使用介绍(HAL库)
参照STM32时钟树配置STM32CubeMX Clock Configuration(STM32L011G4U6为例)
微控制器(处理器)的运行必须要依赖周期性的时钟脉冲来驱动——往往由一个外部晶体振荡器提供时钟输入为始,最终转换为多个外部设备的周期性运作为末,这种时钟“能量”扩散流动的路径,犹如大树的养分通过主干流向各个分支,因此常称之为“时钟树”。在一些传统的低端8位单片机诸如51,AVR,PIC等单片机,其也具备自身的一个时钟树系统,但其中的绝大部分是不受用户控制的,亦即在单片机上电后,时钟树就固定在某种不可更改的状态(假设单片机处于正常工作的状态)。比如51单片机使用典型的12MHz晶振作为时钟源,则外设如IO口、定时器、串口等设备的驱动时钟速率便已经是固定的,用户无法将此时钟速率更改,除非更换晶振。
不脱发的程序猿
2021/01/20
9240
stm32的简介。
STM32的核心Cortex-M3处理器是一个标准化的微控制器结构,希望思考一下,何为标准化?简言之,Cortex-M3处理器拥有32位CPU,并行总线结构,嵌套中断向量控制单元,调试系统以及标准的存
7537367
2020/07/24
1.3K0
相关推荐
stm32编程入门书籍_STM32开发板
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档