0%

STM32之库开发

STM32 Embedded Software

到目前为止STM32的开发库有:

  • 标准外设库(STD库)
  • HAL库
  • LL库(ST最近才添加,随HAL源码包一起提供,目前支持的芯片也偏少)

STM32 Snippets

代码示例的集合,直接基于STM32外设寄存器,可在文档和软件包中使用。

注意:

  • 目前只在STM32F0和L0系列中有提供
  • 代码在不同ST芯片间没有可移植性

标准外设库(Standard Peripheral Libraries)

对STM32芯片的一个完整的封装,包括所有标准器件外设的器件驱动器

注意:

  • 不支持从STM32 L0,L4和F7开始的之后的STM32系列芯片
  • 针对某一系列芯片而言,没有可移植性
  • 其涵盖3个抽象级别
    1. 包含位,位域和寄存器在内的完整的寄存器地址映射
    2. 涵盖所有外围功能(具有公共API的驱动器)的例程和数据结构的集合
    3. 一组包含所有可用外设的示例,其中包含最常用的开发工具的模板项目

STM32Cube

配套桌面软件STMCubeMX(其中包含了HAL库和LL库)

注意:

  • LL库和HAL库两者相互独立,只不过LL库更底层
  • 部分HAL库会调用LL库(如:USB驱动)
  • LL库也会调用HAL库
  • 用户可以使用STMCubeMX直接生成对应芯片的整个项目,STMCubeMX负责整理各种需要的源码文件

HAL(Hardware Abstraction Layer-硬件抽象层)库

抽象层嵌入式软件,确保跨STM32产品的最大可移植性;该库提供了一整套一致的中间组建,如RTOS,USB,TCP/IP和图形等。

LL库

更接近硬件层,对需要复杂上层协议栈的外设不适用,直接操作寄存器

使用方法

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

文章参考:STM32之HAL库、标准外设库、LL库(STM32 Embedded Software)

可参考:STM32之HAL库详解 及 手动移植

Thank you for your reward !