STM32
直播中

一刀两断

8年用户 948经验值
私信 关注
[问答]

STM32 LL库的使用方法是什么

LL库有哪些应用?LL驱动程序功能有哪些?LL库的使用方法是什么?

回帖(1)

康根

2021-10-26 16:07:12
  1. LL库应用场景
  用过STM32的朋友,对于标准库 STD库(Standard Peripheral Libraries)和HAL库(Hardware Abstraction Layer)应该都不会陌生。事实上,ST在推行HAL库的时候,逐渐停止了对于标准库的更新(新出的芯片以及不再提供标准库了),但他们也意识到了HAL库效率较低的问题,因此同时也推出了LL( Low-layer )库。
  所以,当我们针对一些低性能(M0)或者低功耗(L系列)的芯片编程时。相较于HAL库的低效率,寄存器操作的复杂,标准库的逐渐淘汰。LL库就成为了替代HAL库一个比较好的选择了。
  2. LL库官方介绍
  为了准确介绍LL库的大致内容,笔者从HAL&LL F1的官方手册(Description of STM32F1 HAL and Low-layer drivers)中截取部分内容并附上翻译
  
  低层驱动程序概述低层(LL)驱动程序旨在提供快速的轻量级面向专家的层,该层比HAL更接近硬件。与HAL相反,对于优化访问权限不是关键功能的外围设备,或需要大量软件配置和/或复杂上层堆栈(例如FSMC,USB或SDMMC)的外围设备,则不提供LL API。
  LL驱动程序功能: ·
  一组函数,用于根据数据结构中指定的参数初始化外围主要功能
  一组函数,用于用每个字段的重置值填充初始化数据结构
  执行外围设备反初始化的功能(外围设备寄存器恢复为默认值)
  一组内联函数,用于直接和原子寄存器访问
  由于LL驱动程序可以在独立模式下(无HAL驱动程序)或在混合模式下(有HAL驱动程序)使用,因此与HAL完全独立
  全面介绍了支持的外围功能。
  低层驱动程序根据STM32外设的可用功能提供硬件服务。这些服务恰好反映了硬件功能,并提供了一次操作,必须遵循微控制器产品线参考手册中描述的编程模型进行调用。结果,LL服务不执行任何处理,并且不需要任何其他内存资源来保存其状态,计数器或数据指针:所有操作都是通过更改关联的外设寄存器的内容来执行的。
  LL库的手册翻译,我会再出一篇博客。以上为简单介绍 3. LL库资料
  LL库的手册基本是放在HAL库手册中的,作为HAL库的一个补充。笔者已经找到了STM32各系列型号对应的HAL&LL库的官方手册。
  4. LL库的性能优势
  
  上图转载自
  STM32使用HAL库、标准库、LL库和寄存器操作的性能对比_u014519486的博客-CSDN博客_hal库 寄存器
  可见,相较于HAL库而言,LL库的效率是有极大提升的。这一点,在使用LL库编译代码时,就可以明显感觉到速度的提升
  5. LL库的使用方法
  与HAL库相同,LL库同样支持CUBEMX生成代码,非常方便。并且,在cubemx工程中,不同外设是可以混合使用HAL和LL库的,两者完全兼容,所以适配上是不存在问题的。
  
举报

更多回帖

发帖
×
20
完善资料,
赚取积分