stm32芯片包_STM32 之 HAL库、标准外设库、LL库

小米体重秤技术开发解析 _嵌入式-创客学院​www.makeru.com.cn
1940074dcebe2a14982dc48979e112af.png

STM32 Embedded Software

工作以来一直使用ST的STM32系列芯片,ST为开发者提供了非常方便的开发库。到目前为止,有标准外设库(STD库)、HAL库、LL库 三种。前两者都是常用的库,后面的LL库是ST最近才添加,随HAL源码包一起提供,目前支持的芯片也偏少。各库如下所示:

e5a9b41564326dd74200e7f1cd02402d.png

其中,STD库和HAL库两者相互独立,互不兼容。几种库的比较如下:

c816c1d71405b4e1ed9e36b54cc0fa9c.png

目前几种库对不同芯片的支持情况如下:

1f12604a348f7764b72c82ba353df7b1.png

上图中,LL库目前有部分芯片不支持,官方计划2017年逐步完善。

STM32Snippets

它是代码示例的集合,直接基于STM32外设寄存器,可在文档和软件包中使用。由于处在最底层,因此需要开发者直接操作外设寄存器,对开发者要求比较高,通常针对于对汇编程序比较了解的资深嵌入式工程师!

注意:

目前只在STM32F0和L0系列中有提供

代码在不同ST芯片间没有可移植性

标准外设库(Standard Peripheral Libraries)

标准外设库(Standard Peripherals Library)是对STM32芯片的一个完整的封装,包括所有标准器件外设的器件驱动器。这应该是目前使用最多的ST库。几乎全部使用C语言实现。但是,标准外设库也是针对某一系列芯片而言的,没有可移植性。

相对于HAL库,标准外设库仍然接近于寄存器操作,主要就是将一些基本的寄存器操作封装成了C函数。开发者需要关注所使用的外设是在哪个总线之上,具体寄存器的配置等底层信息。

注意:不支持从STM32 L0,L4和F7开始的之后的STM32系列芯片

ST为各系列提供的标准外设库稍微有些区别。例如,STM32F1x的库和STM32F3x的库在文件结构上就有些不同,此外,在内部的实现上也稍微有些区别,这个在具体使用(移植)时,需要注意一下!但是,不同系列之间的差别并不是很大,而且在设计上是相同的。STM32的标准外设库涵盖以下3个抽象级别:

包含位,位域和寄存器在内的完整的寄存器地址映射

涵盖所有外围功能(具有公共API的驱动器)的例程和数据结构的集合。

一组包含所有可用外设的示例,其中包含最常用的开发工具的模板项目。

关于更详细的信息,可以参考ST的官方文档,文档中对于标准外设库函数命名、文件结构等都有详细的说明。

STM32Cube

ST为新的标准库注册了一个新商标:STMCube™。并且,ST专门为其开发了配套的桌面软件STMCubeMX,开发者可以直接使用该软件进行可视化配置,大大节省开发时间。

这其中就包含了HAL库和最近新增的LL库。如下图:

1c9ecc9a9c619117b0b1b44e5fb46e91.png

从上图不难看出,LL库和HAL库两者相互独立,只不过LL库更底层。而且,部分HAL库会调用LL库(例如:USB驱动)。同样,LL库也会调用HAL库

用户可以使用STMCubeMX直接生成对应芯片的整个项目(目前主流开发工具的项目基本全支持),STMCubeMX负责给整理各种需要的源码文件。

注意:

1. 个人感觉STMCubeMX生成的项目并不够简洁,源码的组织结构也并不是很好。

2. STMCubeMX在生产项目时,可以选择使用HAL库或者LL库。但是部分组件的HAL库会调用LL库

HAL库

HAL是Hardware Abstraction Layer的缩写,中文名:硬件抽象层。HAL库是ST为STM32最新推出的抽象层嵌入式软件,可以更好的确保跨STM32产品的最大可移植性。该库提供了一整套一致的中间件组件,如RTOS,USB,TCP / IP和图形等。

HAL库是基于一个非限制性的BSD许可协议(Berkeley Software Distribution)而发布的开源代码。 ST制作的中间件堆栈(USB主机和设备库,STemWin)带有允许轻松重用的许可模式, 只要是在ST公司的MCU 芯片上使用,库中的中间件(USB 主机/设备库,STemWin)协议栈即被允许随便修改,并可以反复使用。至于基于其它著名的开源解决方案商的中间件(FreeRTOS,FatFs,LwIP和PolarSSL)也都具有友好的用户许可条款。

可以说HAL库就是用来取代之前的标准外设库的。相比标准外设库,STM32Cube HAL库表现出更高的抽象整合水平,HAL API集中关注各外设的公共函数功能,这样便于定义一套通用的用户友好的API函数接口,从而可以轻松实现从一个STM32产品移植到另一个不同的STM32系列产品。HAL库是ST未来主推的库,从前年开始ST新出的芯片已经没有STD库了,比如F7系列。目前,HAL库已经支持STM32全线产品。

使用HAL库编程,最好尽量符合HAL库编程的整体架构。关于HAL库的详细介绍,可以参考后文 STM32 HAL库详解 及 手动移植

LL库

LL库(Low Layer)是ST最近新增的库,与HAL捆绑发布,文档也是和HAL文档在一起的,比如:在STM32F3x的HAL库说明文档中,ST新增了LL库这一章节,但是在F2x的HAL文档中就没有。

LL库更接近硬件层,对需要复杂上层协议栈的外设不适用,直接操作寄存器。其支持所有外设。使用方法:

独立使用,该库完全独立实现,可以完全抛开HAL库,只用LL库编程完成。在使用STM32CubeMX生成项目时,直接选LL库即可。如果使用了复杂的外设,例如USB,则会调用HAL库

混合使用,和HAL库结合使用。

LL库文件的命名方式和HAL库基本相同。个人感觉,LL库就是原来的标准外设库移植到Cube下的新的实现。因为使用LL库编程和使用标准

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: stm32 ll是指针对stm32系列微控制器的低级外设驱动。这个为开发者提供了直接访问硬件外设的接口和函数,方便开发者进行底层硬件编程。 stm32 ll手册是stm32 ll的官方文档,详细介绍了该的各种功能和用法。手册中首先给出了的概述和特点,以及支持的stm32系列产品列表,让开发者清楚地了解的适用范围。 接下来,在手册中详细介绍了的组织结构和源文件分布,帮助开发者了解的整体结构和文件的作用。手册还提供了一些使用示例,以及对各个外设的详细说明,括初始化、中断处理、寄存器配置等内容。 在手册中,还提供了丰富的应用注意事项和推荐实践,帮助开发者避免一些常见问题和错误用法,提高代码的可靠性和稳定性。此外,手册还提供了丰富的代码示例,以帮助开发者更好地理解的用法,并加快开发进度。 总结来说,stm32 ll手册是一本非常有用的参考文献,对于想要深入了解stm32系列微控制器以及使用ll开发者来说,是必不可少的工具。它提供了详细的说明和示例,帮助开发者轻松上手使用ll,并加快项目的开发进度。无论是初学者还是有一定经验的开发者,都可以从中获得很多帮助和指导。 ### 回答2: STM32 LL手册是指为了方便开发者使用STM32微控制器而提供的一份详细说明文档。相比于标准LL提供了更底层的抽象和更全面的控制功能,方便开发者对STM32微控制器进行更精确和高效的编程。 LL手册首先介绍了的概述和特点,以便开发者更好地理解和使用LL。接着,手册对LL的安装和使用进行了详细说明,的版本、环境要求和安装步骤等内容,帮助开发者快速上手。 LL手册还提供了丰富的函数和示例代码,方便开发者查找和使用指令。这些函数括对GPIO、UART、SPI、I2C等外设的控制函数,以及时钟、中断和DMA等系统级功能的控制接口。通过查阅手册,开发者可以快速了解和调用各种函数,实现各种功能需求。 此外,手册还提供了LL的API参考,括函数的定义、参数说明和返回值等详细信息。开发者可以根据自己的需求来选择适合的函数和参数,以满足特定的应用场景。 总之,STM32 LL手册是一份非常实用的工具,可以帮助开发者更好地使用和掌握STM32微控制器。通过学习和应用LL手册,开发者可以提高代码的可读性、可维护性和可移植性,从而加快开发进度,提高开发效率。 ### 回答3: STM32 LL是针对STMicroelectronics的STM32系列微控制器而设计的低级别外设驱动。它提供了一种底层编程接口,使开发者能够直接控制STM32芯片上的外设。相较于标准外设(StdPeriph)和高级外设(HAL),LL具有更高的灵活性和效率。 STM32 LL的手册对于开发者来说是一本非常重要的参考工具。手册从的安装和基本概念入手,详细介绍了每个外设的功能和各种可配置的参数。它提供了丰富的示例代码,使开发者能够快速上手和理解的用法。 通过阅读STM32 LL手册,开发者可以深入了解每个外设的工作原理和寄存器映射。手册中还含了外设的时序图、时钟配置和中断处理等重要信息。这使得开发者能够更好地理解外设的工作模式,并根据自己的需求进行配置和优化。 此外,手册还提供了一些常见问题的解答和调试技巧,帮助开发者解决可能遇到的问题。它还列出了LL支持的所有STM32微控制器型号和外设的兼容性信息,使开发者可以根据自己的芯片选择合适的版本。 总之,STM32 LL手册是一本宝贵的资源,它提供了全面而详细的信息,帮助开发者更好地理解和使用LL。通过合理使用LL手册,开发者可以提高开发效率和代码效果,为STM32微控制器的应用开发带来更多的可能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值