SPL2LL转换器实现标准库代码迁移为LL库的方法与内容

发布时间:2024-02-22  

早期开发STM32,大部分工程师都是基于标准库进行开发,如果要换成LL库,且需要复用以前代码,该怎么办呢?

下面就来给大家分享一下使用【SPL2LL转换器】实现标准库代码迁移为LL库的方法,以及相关内容。


1关于LL库

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

开发STM32通常有四种“库”,可以阅读之前分享的文章进一步了解。

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

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

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

之前有工程师总结了的代码性能:

6FrIny.jpeg

针对上图(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:

M7BNZr.jpeg

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

3利用SPL2LL工具转换代码

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

SPL2LL主要特点:

免费

显示源代码迁移状态

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

支持Windows、Linux和MacOS操作系统

网址包含相关文档和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

YrIJNf.png

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

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

提取码: cp37

(包含SPL2LL和ActivePerl工具)

2.安装

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

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

3YzqUz.png

aUBVna.png

ARBJ3m.png

QfIFZ3.png

3.使用SPL2LL

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

IVza63.png

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

AjMfuy.png

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

4.转化代码前后对比

RZz6Zr.png

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


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    ++源代码转换成体积更小的二进制代码,从而在给定的MCU中加入更多的功能。在嵌入式系统中,MCU的存储器资源通常是有限的,因此,如果代码越小,系统就可以实现更多的功能。此外,更小的代码......
    噪音叫做干扰。这个干扰的解决方案之一是使用温度计码(Thermometer code)。 温度计码是指“看有多少个1来表示数字”的事物。(就像人们数数时,竖起手指数一样) 能够抗干扰,但二进制代码转换......
    编码,可以表示更高精度的位置信息。 1、平行位移型:绝对值编码器一般由光电传感器阵列和逻辑电路构成。当物体相对于传感器阵列发生位移时,逻辑电路会把传感器所接收到的光电信号转换为二进制代码,并输......
    制中每一固定位置对应的单位值。   将PLC指令二进制码转换为十进制需要使用二进制转十进制的方法。具体步骤如下:   1. 将PLC指令的二进制码按照位数从右向左顺序写出来。   2. 从右向左,将每一位上的数字乘以2的幂......
    PLC指令的十六进制码转换为十进制,可以使用下面的方法:   1. 将每个十六进制数字转换为4位二进制数,例如:将A2转换为1010 0010,将3F转换为0011 1111。   2. 将这些二进制......
    该产品在市场上很火爆,他们获得的利益会远远超过代工的收益。 STM32 在这种情景下,提供了一种技术手段,来保护委托方产品研发的权益。也就是说除了正常的 法律手段之外,STM32 技术手段可以防止工厂泄漏受委托生产的固件的二进制代码......
    码转十进制 BCD码是用四位二进制表示一位十进制数,所以转换方法类似二进制转十六进制“取四合一”法,四位组合后转成十进制得到的就是十进制。 以上就是PLC中常用进制及相互转换方法,加上举例是不是很简单呢? ......
    )的时间。 转换时间:指ADC从发出转换指令开始到获得稳定的二进制代码所需要的时间,转换时间与ADC的类型、原理和位数有关。 上图两个都是8位ADC模型,分辨率为 2的8次方等于256,即将Vref......
    要反向工程师拥有足够的开发经验,及对STM32系列单片机有足够的了解。 通常的操作都是: 第一步:先进行解密,提供二进制代码BIN文件。 第二步:将BIN文件转成反汇编文件,汇编文件也是一种编程文件,只是......
    最多只能输入 1024 个字符,编码后的 DNA 序列仍然是 40 个字符。相比之下,直接转换成二进制代码也需要 40 个字符。 尽管功能性 DNA 存储很酷,但似乎仍有很长一段路要走,才能使其成为数据中心其他解决方案的可行替代方案。 ......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>