0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

电子工程师 来源:嵌入式专栏 作者:strongerHuang 2021-04-24 09:30 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

早期开发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。
编辑:lyn

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 转换器
    +关注

    关注

    27

    文章

    9449

    浏览量

    156982
  • STM32
    +关注

    关注

    2313

    文章

    11195

    浏览量

    374673
  • 代码
    +关注

    关注

    30

    文章

    4976

    浏览量

    74388
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    深入剖析MC9S08LL16系列MCU:特性、参数与应用指南

    深入剖析MC9S08LL16系列MCU:特性、参数与应用指南 在电子工程师的日常工作中,微控制(MCU)是设计各类电子系统的核心组件。今天,我们将深入探讨Freescale
    的头像 发表于 04-09 14:20 208次阅读

    立讯精密DP80LL系列线缆通过VESA官方认证

    1 月 14 日,立讯精密研发的的USB TYPE C TO fsDP 80LL Active Cable 3M产品,成功延续其技术领先优势,稳居全球首批通过 VESA 官方认证的主动式 C
    的头像 发表于 01-23 11:27 1238次阅读
    立讯精密DP80<b class='flag-5'>LL</b>系列线缆通过VESA官方认证

    深度解析SPL阶段A/B分区启动:spl_ab.c代码全拆解

    ( Secondary Program Loader ,二级程序加载)作为系统启动的早期阶段,负责初始化硬件、选择启动分区, spl_ab.c 正是 SPL 层处理 A/B 分区启动的核心
    的头像 发表于 01-20 07:07 1w次阅读
    深度解析<b class='flag-5'>SPL</b>阶段A/B分区启动:<b class='flag-5'>spl</b>_ab.c<b class='flag-5'>代码</b>全拆解

    1608 2.4G&5GHz 双工 DPX1608LL80R2455A 技术解析

    1608 2.4G5GHz 双工 DPX1608LL80R2455A 技术解析 在无线通信领域,双工实现不同频段信号分离与传输的关键器件。今天我们就来详细解析一款 1608 2.
    的头像 发表于 01-04 17:15 631次阅读

    1608 2.4G&5GHz 双工 DPX1608LL80R2455A 技术解析

    1608 2.4G5GHz 双工 DPX1608LL80R2455A 技术解析 在无线通信领域,双工实现不同频段信号分离与合成的关键元件。今天我们就来详细解析一款 1608 2.
    的头像 发表于 12-18 16:55 612次阅读

    探索Type 2LL:集Wi-Fi、蓝牙和802.15.4于一体的三无线电模块

    探索Type 2LL:集Wi-Fi、蓝牙和802.15.4于一体的三无线电模块 在当今的电子设备设计中,无线连接功能的集成度和性能至关重要。Murata的Type 2LL三无线电模块就是这样一款
    的头像 发表于 12-16 15:40 1739次阅读

    什么是KEIL的微(microlib)

    完全兼容标准C语言。Microlib相比于标准代码量能少多少呢?下图为Microlib与标准
    发表于 12-10 06:27

    标准C的区别

    主要的差异: 1.代码(数据)量更小(对比上图)。 2.缺少一些不常用标准库函数,比如:文件 I/O 的库函数。 3.微最大程度优化代码
    发表于 12-09 07:49

    STM32已经用标准写好的代码,怎么导入RT THREAD?

    之前已经在裸机上实现了SAE J1939协议,因为要添加IOT 功能,现在想添加RT THREAD.因为之前写裸机程序的时候用的是标准。而RT THREAD STUDIO自动生成的是HAL
    发表于 09-19 06:16

    怎么用LL命令读取SPI?

    用cubemx构建工程,MDK开发,这个项目采用AD4020 20位2MSPS外置ADC,ADC转换速率高达0.5us,而STM32H5用HAL的HAL_SPI_Receive(&
    发表于 09-09 08:17

    数据数据恢复—服务异常断电导致Oracle数据故障的数据恢复案例

    Oracle数据故障: 某公司一台服务上部署Oracle数据。服务意外断电导致数据报错,报错
    的头像 发表于 07-24 11:12 845次阅读
    数据<b class='flag-5'>库</b>数据恢复—服务<b class='flag-5'>器</b>异常断电导致Oracle数据<b class='flag-5'>库</b>故障的数据恢复案例

    为什么要选择采用TO-LL封装的意法半导体SiC MOSFET

    采用TO-LL封装的意法半导体SiC MOSFET将第3代STPOWER SiC技术的固有特性与TO-LL封装出色的散热和电流性能集于一身。这些设计元素共同实现了出色的开关性能、可靠性和热管理功能,而附加的Kelvin源引线则可
    的头像 发表于 06-09 09:57 1169次阅读

    基于STM32 HAL标准的esp8266接入机智云方案(二)

    ,我们还将讨论如何移植HAL标准实现与机智云的兼容,帮助开发者更高效地完成项目的云平台接入。代码下载注意:此时手机app端的该设备
    的头像 发表于 05-28 18:02 1658次阅读
    基于STM32 HAL<b class='flag-5'>库</b>与<b class='flag-5'>标准</b><b class='flag-5'>库</b>的esp8266接入机智云方案(二)

    STM32已经用标准写好的代码,怎么导入RT THREAD?

    之前已经在裸机上实现了SAE J1939协议,因为要添加IOT 功能,现在想添加RT THREAD.因为之前写裸机程序的时候用的是标准。而RT THREAD STUDIO自动生成的是HAL
    发表于 05-27 06:01

    PCB标准封装文件

    PCB标准封装文件
    发表于 05-22 17:43 10次下载