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

    文章

    9135

    浏览量

    152450
  • STM32
    +关注

    关注

    2296

    文章

    11036

    浏览量

    366414
  • 代码
    +关注

    关注

    30

    文章

    4906

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

    Oracle数据故障: 某公司一台服务上部署Oracle数据。服务意外断电导致数据报错,报错
    的头像 发表于 07-24 11:12 ?170次阅读
    数据<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 ?519次阅读

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

    ,我们还将讨论如何移植HAL标准实现与机智云的兼容,帮助开发者更高效地完成项目的云平台接入。代码下载注意:此时手机app端的该设备
    的头像 发表于 05-28 18:02 ?611次阅读
    基于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 ?5次下载

    18个常用的强化学习算法整理:从基础方法到高级模型的理论技术与代码实现

    本来转自:DeepHubIMBA本文系统讲解从基本强化学习方法到高级技术(如PPO、A3C、PlaNet等)的实现原理与编码过程,旨在通过理论结合代码的方式,构建对强化学习算法的全面理解。
    的头像 发表于 04-23 13:22 ?531次阅读
    18个常用的强化学习算法整理:从基础<b class='flag-5'>方法</b>到高级模型的理论技术与<b class='flag-5'>代码</b><b class='flag-5'>实现</b>

    如何采集雷达流量计(SCJ-LL21)数据

    SCJ-LL21雷达流量计是一款集成雷达测速,雷达测量水位的一体化测流产品,利用电磁波的多普勒效应测量水体流速,利用调频连续波(FMCW)技术测量水位;内部集成信号处理,专有的流速计算算法,可以
    的头像 发表于 04-10 11:13 ?388次阅读
    如何采集雷达流量计(SCJ-<b class='flag-5'>LL</b>21)数据

    如何将HAL转为LL

    怎么将HAL转为LL
    发表于 03-10 06:08

    请问STM32G431 flash和can为什么没有LL

    STM32G431 flash和can为什么没有LL
    发表于 03-07 06:48

    AKI跨语言调用神助攻C/C++代码迁移至HarmonyOS NEXT

    )开发框架。它极大地简化了JS与C/C++之间的跨语言访问,开发者提供了一种边界性编程体验友好的解决方案。通过AKI,开发者可以使用让代码更易读的语法糖,实现JS与C/C++之间的无障碍跨语言互调
    发表于 01-02 17:08

    ODX诊断数据转换工具 - DDC

    问卷直接转换标准的ODX(2.2.0)数据,显著提高工作效率。还可将多个不同控制的ODX文件打包成整车级别的PDX文件,用于管控车型诊断数据
    的头像 发表于 12-31 11:22 ?624次阅读
    ODX诊断数据<b class='flag-5'>库</b><b class='flag-5'>转换</b>工具 - DDC

    ADS129x采用三电极,RL LL的共模电压如何提供?

    采用三电极,(RL LL和RLD),那么RL LL的共模电压如何提供?我收集到如下2方法: 1.10M电阻上拉到RLD输出 2.2个10M分压到(AVDD+AVSS)/
    发表于 12-23 07:46

    联想Z360 QD-ll7a独立显卡主板电路

    联想Z360 QD-ll7a 独立显卡主板
    发表于 12-20 14:45 ?2次下载

    HAL标准的区别 HAL与CMSIS的关系

    基本的输入输出、数学运算、字符串处理等功能。这些函数是独立于硬件平台的,可以在不同的操作系统和硬件平台上运行。标准的主要目的是提供一组通用的、可移植的函数,使得开发者可以专注于业务逻辑的实现,而不需要关心底层硬件的具体细节。
    的头像 发表于 12-02 14:02 ?3438次阅读

    KeyStone ll设备的硬件设计指南

    电子发烧友网站提供《KeyStone ll设备的硬件设计指南.pdf》资料免费下载
    发表于 10-12 14:27 ?0次下载
    KeyStone <b class='flag-5'>ll</b>设备的硬件设计指南