[应用相关]

STM32标准库转LL库代码

[复制链接]
577|16
手机看帖
扫描二维码
随时随地手机跟帖
木木guainv|  楼主 | 2022-6-14 12:35 | 显示全部楼层 |阅读模式
一、四种库比较

LL库,即STM32Cube Low-Layer,也叫Cube LL、Cube底层库等。

开发STM32通常有四种“库”,寄存器、标准外设库、HAL、LL。

早在2014年,ST推出了STM32CubeMX这款工具,同步推出了对应的STM32Cube HAL库。

但是,HAL存在一些问题:代码量大、执行效率低等缺点。

因此,在2017年,ST推出了STM32Cube LL库,目的就是为了解决的HAL库的缺点,让开发STM32的工程师有更多的选择。

之前有工程师总结了寄存器、标准外设库、HAL、LL四种库的代码性能:

3544762a80ac9b872e.png

(来源ST社区)

针对上图(Flash、 SRAM 占用量和执行代码的效率这三项指标对比测试)简单讲几点:

1.ROM代码和RAM占用量最小的属于直接操作寄存器WED,对于ROM资源较小的芯片具有优势;

2.执行效率最高的也属于WED,但是代码编辑、移植性和可读写都较差。(其实汇编语言比这还有优势,一般没有特殊要求,不建议使用该寄存器编程)

3.三项指标中,除了WED之外,SPL和Cube LL相近(不相上下),也相比Cube HAL就有优势。所以,SPL和Cube LL是四种之中最佳选择的两种。

4.SPL和Cube LL各有特点:SPL库成熟,可读性(特别针对初学者)很好,查找问题也方便;Cube LL可以使用STM32CubeMX图形化工具直接生产初始化代码和工程,在这方便也具有明显优势。

-----------------------------------------------------------------------------------------------------------------

二、为什么要用LL库?

上面讲述了关于LL库,以及其他几种库的内容,你会发现,几种库开发STM32各有各的优势。

1.对于RAM和Flash这种资源比较少的STM32,除了用标准外设库之外,LL库就是一个很好的选择。

2.使用LL库配置的代码,相对自己参考寄存器手册配置的代码,LL库API接口更规范,更具有移植性。

3.有些芯片,没有标准外设库,只有早期推出的STM32才有标准外设库,包含F0、 F1、 F2、 F3、 F4、 L1:

9535062a80ad5eb843.png

新出来的(像F7、L4、G0等)这些芯片只能使用目前的HAL、LL库,或者你自己参考手册配置寄存器(不是特殊情况,我不建议自己配寄存器)。

-----------------------------------------------------------------------------------------------------------------

三、利用SPL2LL工具转换代码

SPL2LL即标准外设库转LL库的转换器工具。

SPL2LL主要特点:

免费

显示源代码迁移状态

生成C代码,适用于IAR,Keil和GCC编译器

支持Windows、Linux和MacOS操作系统

-----------------------------------------------------------

1.ActivePerl下载安装

在使用SPL2LL工具之前,需要安装【ActivePerl】这个工具,不然会提示错误:

Error : cannot find perl, please verify that you have perl (>5.24.1) installed and added to path

Then restart the application

-----------------------------------------------------------

2.安装

SPL2LL工具不需要安装,直接点开即可使用,但前提需要安装【ActivePerl】工具。

【ActivePerl】安装比较简单,一路Next下去即可。



format,png.jpg


format,png.jpg


format,png.jpg

format,png.jpg



-----------------------------------------------------------

3.使用SPL2LL

SPL2LL使用方法很简单,选在源和目标的型号、路径,然后执行即可。
3637462a80af8128e3.png


选择好之后,点击“Migrate”即可执行转换。

5425462a80b0210f72.png

这里需要耐心等待,比较费时间,原理就是遍历你源码中标准库,然后转换成LL库。

-----------------------------------------------------------

4.转化代码前后对比

3164362a80b0e45838.png

你会发现,即使被屏蔽的代码也进行了SPL转LL。


使用特权

评论回复
skyred| | 2022-6-16 21:07 | 显示全部楼层
这是专门代码转换的?转换结果靠谱么

使用特权

评论回复
i1mcu| | 2022-6-20 15:26 | 显示全部楼层
STM32Cube HAL 和 LL配合STM32CubeMX工具对STM32进行开发。

使用特权

评论回复
skyred| | 2022-6-20 20:41 | 显示全部楼层
这是能直接进行库转换?
我没做梦吧,真强

使用特权

评论回复
louliana| | 2022-6-20 21:21 | 显示全部楼层
HAL存在一些问题:代码量大、执行效率低等缺点。

使用特权

评论回复
selongli| | 2022-6-22 20:30 | 显示全部楼层
SPL2LL-Converter,即标准外设库SPL转LL库的转换器工具。

使用特权

评论回复
1988020566| | 2022-6-23 21:59 | 显示全部楼层
都是基于标准外设库(SPL)进行开发

使用特权

评论回复
mikewalpole| | 2022-6-24 14:40 | 显示全部楼层
SPL2LL工具。

使用特权

评论回复
sanxingnote7| | 2022-6-24 16:13 | 显示全部楼层
STM32Snippets

使用特权

评论回复
xiaoyaodz| | 2022-6-24 21:38 | 显示全部楼层
STM32四种库对比:寄存器、标准外设库、HAL、LL

使用特权

评论回复
pl202| | 2022-7-10 15:38 | 显示全部楼层
标准库挺好用的。   

使用特权

评论回复
lihuami| | 2022-7-10 16:37 | 显示全部楼层
STM32CubeMX就行,配置简单可靠。   

使用特权

评论回复
dzfansman| | 2022-7-10 17:43 | 显示全部楼层
HAL看着好复杂。   

使用特权

评论回复
plsbackup| | 2022-7-10 19:10 | 显示全部楼层
还有转换工具吗   

使用特权

评论回复
232321122| | 2022-7-10 20:10 | 显示全部楼层
STM32Cube Low-Layer会不会改变程序架构?   

使用特权

评论回复
sanfuzi| | 2022-7-10 21:17 | 显示全部楼层
一般都是标准库和寄存器操作结合起来的。   

使用特权

评论回复
chenci2013| | 2022-7-24 21:52 | 显示全部楼层
用hal不好理解标准库了。   

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

134

主题

3820

帖子

5

粉丝