找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 11612|回复: 6
收起左侧

【NUCLEO-L476RG LL库开发】STM32【LL库】开发使用指南

[复制链接]
ID:127084 发表于 2016-6-17 14:37 | 显示全部楼层 |阅读模式

熟悉STM32的都知道ST官方提供了非常方便好用的库函数供用户使用,多数人都使用过STM32标准外设库,STM32Cube库(即HAL库),这个LL库是什么鬼,却从来没听说过。

好吧,我承认这个名字是我自己XJB的。。。。。。。。



一、       初识LL

最近论坛发的STM32L476RGNucleo开发板到手了,准备学习玩耍,当然第一步就是下载资料,于是我下载STM32L4Cube 1.1.0版本,打开逐个查看,

184850p3m22imp2jn2w82x.png


好像和以前一样的,没什么特别嘛,于是准备开始开发。。。
等等,好像还真发现了有点不一样:


184852hroo3zi0q7e3pj0r.png

熟悉HAL库的都知道,该库的文件几乎都是以stm32xxx_hal_xxx.h/.c命名的,为了和以前的标准库有个区分,上图中那些是什么鬼?????
前辈说,遇到问题赶紧查手册,于是我果断打开STM32L4Cube库的说明手册(UM1884):

184853krnqnwwno8ogyg00.png



原来这个东西叫做LowLayer APIs,作为英文渣渣表示实在不习惯洋里洋气的高大上名字,于是擅自把他叫做【STM32LL库】了(不服的你咬我啊)。

从这里看好像是说这个东东比HAL库更接近硬件,到底什么鬼,还不清楚。但是以前好像没见过这个东西啊,就算是STM32L4Cube的1.0.0版本中都没有。看看Cube发行历史:




184854txsqlcqsnscjjvx6.png


原来LL库是在1.1.0版本才加上的,大概意思就是:
1.          LL APIs是寄存器级的编程,嗯,也就是我们常说的直接操作寄存器吧。
2.          LL APIs适用于xxx等一大堆外设
3.          LL APIs函数全部定义为staticinline函数,放在对应的头文件中,用户使用需要包含相关头文件
4.          参考这两个文档
看看LL库文件在Cube库中的位置,有20多个文件,全部以stm32l4xx_ll_xxx.h命名:
STM32Cube_FW_L4_V1.1.0DriversSTM32L4xx_HAL_DriverInc

184917y2dqkkksedyy5xkk.png


STM32L4是面向低功耗市场的,同时不失高性能,功耗和性能往往是两个矛盾的东西,ST在硬件设计上想了各种办法来实现兼顾低功耗高性能(例如各种低功耗模式,LP外设等),而在软件层面,程序也讲求效率, LL库全是直接操作寄存器,直接操作寄存器往往效率较高,而且函数定义为内联函数,调用函数时不是堆栈调用,而是直接把函数的代码嵌入到调用的地方,利于提高代码相率,我想这也是ST在STM32L4系列中推出这个直接操作寄存器的LL库的原因之一吧。


二、       怎么使用LL

先看看手册里怎么说的,它有什么特点:

185442fuagdxeeipygxfzx.png


英文渣渣就不翻译了,反正大概就是说
LL库更接近硬件层,对需要复杂上层协议栈的外设不适用,直接操作寄存器等等一大堆,到这里,可以看到它的使用方法:
1.        独立使用,该库完全独立实现,可以完全抛开HAL库,只用LL库编程完成。
2.        混合使用,和HAL库结合使用。
本人就常在编程的时候库函数和寄存器操作混合,所以觉得混合使用应该是不错的方式。
最后一段还说到该库不需要额外的内存资源来存储程序状态,数据指针等东西,所有的操作都通过直接修改外设的寄存器来完成。
下面是手册中对各个LL文件的描述:


185450py5atc65ttbyib7p.png

就是讲LL库由5部分组成:每个外设对应一个头文件组成一部分,以及系统相关的bus,cortex,utils,system四个部分。

前面提到,要使用LL库,需要包含对应头文件,各头文件之间有如下关系:
185454hexwg4x4zl6nzyqe.png

看来,我们编程的时候只需要#include某外设的头文件,就可以使用LL库了,但是同时,系统启动文件,初始化文件等一系列不能少,具体讲就是:

stm32l4xx.h
stm32l476xx.h
system_stm32l4xx.h
system_stm32l4xx.c
startup_stm32l476xx.s

这几个文件,这在标准库,Cube库都不曾变过的铁律。

顺便分享一下STM32L4Cube 库 1.1.0版本和1.1.1版本的Pack 百度网盘下载地址:http://pan.baidu.com/s/1c0wjL5m

一楼二楼是具体使用方法。
已完,上传文档和工程模板:
STM32 LL库使用指南.pdf (847.11 KB, 下载次数: 125)
回复

使用道具 举报

ID:258960 发表于 2017-12-22 11:21 | 显示全部楼层
不错的教程
回复

使用道具 举报

ID:72988 发表于 2018-10-25 06:09 | 显示全部楼层

不错的教程
回复

使用道具 举报

ID:20672 发表于 2019-2-26 16:16 | 显示全部楼层
谢谢分享,LL比较底层了,多看看才能看懂了
回复

使用道具 举报

ID:671742 发表于 2020-1-9 14:20 | 显示全部楼层
谢谢分享,这个应该就是最精减的库了吧。
回复

使用道具 举报

ID:328121 发表于 2020-1-10 08:47 | 显示全部楼层
谢谢分享,值得一看
回复

使用道具 举报

ID:336576 发表于 2021-8-12 09:49 | 显示全部楼层
支持一下。hal库, 串口到现在也是不太好
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表