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个抽象级别
- 包含位,位域和寄存器在内的完整的寄存器地址映射
- 涵盖所有外围功能(具有公共API的驱动器)的例程和数据结构的集合
- 一组包含所有可用外设的示例,其中包含最常用的开发工具的模板项目
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库结合使用