• 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库,目的就是为了解决的HAL库的缺点,让开发STM32的工程师有更多的选择。

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

    (来源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:

    新出来的(像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/


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

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

    提取码: cp37
    (包含SPL2LL和ActivePerl工具)
    2.安装

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

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

    3.使用SPL2LL

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

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

    错误解决: "XML::Parser::Expat object version 2.46 does not match bootstrap parameter 2.44 at C:/Perl64/lib/DynaLoader.pm line 210."

    翻译:SPL2LL_Converter 返回错误“XML::Parser::Expat 对象版本 2.46 与 C:/Perl64/lib/DynaLoader.pm 行 210 处的引导程序参数 2.44 不匹配。”

    解决办法:下载 perl 5.24.4.1(旧版本)

    http://www.kxdw.com/soft/27960.html

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

    你会发现,即使被屏蔽的代码也进行了SPL转LL。
    主要内容就分享到了,希望对你有帮助。

  • 相关阅读:
    CSDN社区之星专訪:我的蜕变之路
    Linux中运行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory。
    00075_BigInteger
    Delphi中Interface接口的使用方法
    Delphi结构体的扩展,可以自动初始化,反初始化,自定义拷贝函数.
    关于指针和堆栈
    Delphi 中的 procedure of object
    MikroTik RouterOS防火墙与过滤详解
    用 ROS 做内网DNS服务器
    GR32 TImage32的图层绘制原理
  • 原文地址:https://www.cnblogs.com/luckytimor/p/14927514.html
Copyright © 2020-2023  润新知