作者|更强大的黄微信公众号|嵌入式专栏STM32的早期开发,大多数工程师都是基于标准库进行开发的,如果要替换LL库,并且需要重用以前的代码,我该怎么办?让我们与您分享使用[SPL2LL转换器]将标准库代码迁移到LL库以及相关内容的方法。
1关于LL库LL库即STM32Cube Low-Layer,也称为Cube LL,Cube低层库等。
通常有四种“库”,它们分别是:用于STM32的开发。
您可以阅读文章“四个STM32库的比较:寄存器,标准外围设备库,HAL,LL”。
分享之前了解更多信息。
ST早在2014年就推出了STM32CubeMX工具,并同时启动了相应的STM32Cube HAL库。
但是,HAL存在一些问题:大量代码,低执行效率和其他缺点。
因此,ST在2017年推出了STM32Cube LL库,目的是解决HAL库的不足,使开发STM32的工程师有更多选择。
以前,一些工程师总结了四个寄存器库,标准外设库,HAL和LL的代码性能:(源ST社区)对于上图(闪存,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:新的(例如F7,L4,G0等)。
您只能使用当前的HAL,LL库或您自己的库参考手册配置寄存器(不是特殊情况,我建议您自己配置寄存器)。
3使用SPL2LL工具转换代码SPL2LL,这是用于将标准外围设备库转换为LL库的转换器工具。
SPL2LL主要功能:免费显示源代码迁移状态以生成C代码,适用于IAR,Keil和GCC编译器,支持Windows,Linux和MacOS操作系统URL:https://www.stmicroelectronics.com.cn/en/development-工具/spl2ll-converter.html URL包含相关文档和SPL2LL工具。
1. ActivePerl下载和安装在使用SPL2LL工具之前,您需要安装[ActivePerl]此工具,否则将提示错误:错误:找不到perl,请验证是否已安装perl(> 5.24.1),并且添加到路径然后重新启动应用程序下载地址:https://www.activestate.com/products/perl/downloads/如果发现下载困难,可以将其下载到我们的网络磁盘中:https://pan.baidu。
com / s / 1_R21S93V9hzlJ8ZL1D4dKA提取代码:cp37(包括SPL2LL和ActivePerl工具)2.不需要安装SPL2LL工具,可以通过单击直接使用它,但是前提条件是必须安装[ActivePerl]工具。
[ActivePerl]安装相对简单,一直到Next。
3.使用SPL2LL SPL2LL的使用方法非常简单,选择源和目标的模型和路径,然后执行它。
选择后,单击“迁移”,然后单击“确定”。
执行转换。
在这里,您需要耐心等待,这需要花费更多时间,其原理是遍历源代码中的标准库,然后将其转换为LL库。
4.在代码转换之前和之后,您会发现即使被阻止的代码也已从SPL转换为L