良许Linux教程网 干货合集 神器SPL2LL轻松实现STM32标准库代码迁移为LL库代码

神器SPL2LL轻松实现STM32标准库代码迁移为LL库代码

在早期的STM32开发中,大部分工程师使用的是标准库进行开发。但是,如果你想要切换到LL库,并且需要重用之前的代码,该怎么办呢?

接下来,我将与大家分享使用SPL2LL转换器实现标准库代码迁移到LL库的方法,以及相关内容。

1 关于LL库

LL库,即STM32Cube Low-Layer,也被称为Cube LL、Cube底层库等。

在开发STM32时,通常有四种库可以选择,你可以阅读之前分享的文章《STM32四种库对比:寄存器、标准外设库、HAL、LL》以进一步了解。

早在2014年,ST推出了一款名为STM32CubeMX的工具,同时也推出了对应的STM32Cube HAL库。

然而,HAL库存在一些问题,例如代码量庞大和执行效率较低等缺点。

因此,在2017年,ST推出了STM32Cube LL库。LL库的目的是解决HAL库的问题,并为开发STM32的工程师提供更多选择的机会。

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

image-20231202214834022
image-20231202214834022

(来源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图形化工具直接生产初始化代码和工程,在这方便也具有明显优势。

2为什么要用LL库?

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

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

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

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

image-20231202215000681
image-20231202215000681

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

3利用SPL2LL工具转换代码

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

SPL2LL主要特点:

  • 免费
  • 显示源代码迁移状态
  • 生成C代码,适用于IAR,Keil和GCC编译器
  • 支持Windows、Linux和MacOS操作系统

网址:

https://www.stmicroelectronics.com.cn/en/development-tools/spl2ll-converter.html

网址包含相关文档SPL2LL****工具。

**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

下载地址:

https://www.activestate.com/products/perl/downloads/

image-20231202215005415
image-20231202215005415

如果觉得下载麻烦,可以在我网盘:

https://pan.baidu.com/s/1_R21S93V9hzlJ8ZL1D4dKA

提取码: cp37

(包含SPL2LL和****ActivePerl****工具)

2.安装

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

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

image-20231202215011765
image-20231202215011765
image-20231202215014971
image-20231202215014971
image-20231202215018073
image-20231202215018073
image-20231202215020948
image-20231202215020948

3.使用SPL2LL

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

image-20231202215025002
image-20231202215025002

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

image-20231202215028515
image-20231202215028515

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

4.转化代码前后对比

image-20231202215032086
image-20231202215032086

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

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部