STM32LL库系列教程(一)—— LL库概览及资料

 **开发平台**  :  
 正点原子  探索者STM32F407ZET6
 cube mx:V 5.1.0
 keil uVision5

项目地址:
github : https://github.com/liliang1918/STM32LL
码云 :https://gitee.com/liang1918/stm32_ll_library

注意:
本教程默认读者已经对stm32和cubemx软件有一定了解;
为节省篇幅,详细配置cubemx的步骤仅在此篇中说明,以后仅会简略介绍配置相关内容。
STM32LL库系列教程(一)———— LL库概览及资料
总体介绍LL库的优势及资料获取

系列教程目录

STM32LL库系列教程(一)—— LL库概览及资料
STM32LL库系列教程(二)——点亮LED灯
STM32LL库系列教程(三)——串口中断
STM32LL库系列教程(四)——外部中断
STM32LL库系列教程(五)——定时器中断
(这个系列暑假期间正在完善,所以有的链接打不开是因为文章还是草稿状态,见谅!)

文章目录

      • 系列教程目录
        • 1. LL库应用场景
        • 2. LL库官方介绍
        • 3. LL库资料
        • 4. LL库的性能优势
        • 5. LL库的使用方法

1. LL库应用场景

用过STM32的朋友,对于标准库 STD库Standard Peripheral Libraries)和HAL库Hardware Abstraction Layer)应该都不会陌生。事实上,ST在推行HAL库的时候,逐渐停止了对于标准库的更新(新出的芯片以及不再提供标准库了),但他们也意识到了HAL库效率较低的问题,因此同时也推出了LLLow-layer

所以,当我们针对一些低性能(M0)或者低功耗(L系列)的芯片编程时。相较于HAL库的低效率,寄存器操作的复杂,标准库的逐渐淘汰。LL库就成为了替代HAL库一个比较好的选择了。

2. LL库官方介绍

为了准确介绍LL库的大致内容,笔者从HAL&LL F1的官方手册(Description of STM32F1 HAL and Low-layer drivers)中截取部分内容并附上翻译

STM32LL库系列教程(一)—— LL库概览及资料_第1张图片

低层驱动程序概述低层(LL)驱动程序旨在提供快速的轻量级面向专家的层,该层比HAL更接近硬件。与HAL相反,对于优化访问权限不是关键功能的外围设备,或需要大量软件配置和/或复杂上层堆栈(例如FSMC,USB或SDMMC)的外围设备,则不提供LL API。
LL驱动程序功能: ·

  • 一组函数,用于根据数据结构中指定的参数初始化外围主要功能
  • 一组函数,用于用每个字段的重置值填充初始化数据结构
  • 执行外围设备反初始化的功能(外围设备寄存器恢复为默认值)
  • 一组内联函数,用于直接和原子寄存器访问
  • 由于LL驱动程序可以在独立模式下(无HAL驱动程序)或在混合模式下(有HAL驱动程序)使用,因此与HAL完全独立
  • 全面介绍了支持的外围功能。

低层驱动程序根据STM32外设的可用功能提供硬件服务。这些服务恰好反映了硬件功能,并提供了一次操作,必须遵循微控制器产品线参考手册中描述的编程模型进行调用。结果,LL服务不执行任何处理,并且不需要任何其他内存资源来保存其状态,计数器或数据指针:所有操作都是通过更改关联的外设寄存器的内容来执行的。

LL库的手册翻译,我会再出一篇博客。以上为简单介绍

3. LL库资料

LL库的手册基本是放在HAL库手册中的,作为HAL库的一个补充。笔者已经找到了STM32各系列型号对应的HAL&LL库的官方手册。链接如下:

链接:https://pan.baidu.com/s/1PuUF4x780O-ZDjvqK_Z5gg 
提取码:ldqd

STM32LL库系列教程(一)—— LL库概览及资料_第2张图片

4. LL库的性能优势

STM32LL库系列教程(一)—— LL库概览及资料_第3张图片

上图转载自
STM32使用HAL库、标准库、LL库和寄存器操作的性能对比_u014519486的博客-CSDN博客_hal库 寄存器
https://blog.csdn.net/u014519486/article/details/102800532

可见,相较于HAL库而言,LL库的效率是有极大提升的。这一点,在使用LL库编译代码时,就可以明显感觉到速度的提升

5. LL库的使用方法

与HAL库相同,LL库同样支持CUBEMX生成代码,非常方便。并且,在cubemx工程中,不同外设是可以混合使用HAL和LL库的,两者完全兼容,所以适配上是不存在问题的。
STM32LL库系列教程(一)—— LL库概览及资料_第4张图片

你可能感兴趣的:(STM32LL库)