STM32标准库代码转为LL库代码-详解

news2024/11/19 20:26:39

概述

        由于标准库,ST公司逐步不再维护,比较老旧的项目,都是使用标准库来开发,如果想使用LL库,需要借助《SPL2LL转换器》实现。

1、LL库简介

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

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

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

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

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

针对上图(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:
通过下面这个链接可以进入ST官方对标准外设库支持的主界面:
STM32 Standard Peripheral Libraries - STMicroelectronics

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

 

2.安装

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

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

3.使用SPL2LL

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

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

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

4.转化代码前后对比

通过上图发现,即使被屏蔽的代码也进行了SPL转LL。

介绍完毕,希望对各位有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1081601.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

文件上传 [极客大挑战 2019]Upload 1

题目来源&#xff1a;buuctf [极客大挑战 2019]Upload 1 打开题目 是一道文件上传题 我们上传png和jpg格式的一句话木马上去看看 上传失败了&#xff0c;应该是在后端也对我们的文件内容进行了检测&#xff0c;检测到我们的一句话木马里面包含<? 那我们重新换个一句话木…

【软件工程】常见软件过程模型及其优缺点

软件过程模型 1. 瀑布模型2. V模型3. 原型模型4. 增量模型5. 螺旋模型6. 喷泉模型 1. 瀑布模型 描述&#xff1a; 瀑布模型是将软件开发划分为不同的阶段&#xff0c;只有上一个阶段完成了才能进入到下一个阶段&#xff0c;也就是按照需求分析、设计、实现、测试、运行和维护这…

UML类图是什么?怎么画?

在软件开发和系统设计领域&#xff0c;UML&#xff08;Unified Modeling Language&#xff09;类图是一种强大的工具&#xff0c;用于可视化和表示软件系统的结构和关系。如果你曾经在软件开发中遇到过“UML类图是什么&#xff1f;”这个问题&#xff0c;那么你来对地方了。本文…

简要归纳UE5 Lumen全局光照原理

一、Jim kajiya老爷子的渲染方程&#xff1a; 求全局光照就是求解渲染方程&#xff0c;我们将两边都有未知数的渲染方程变换成离散形式&#xff1a; 更形象的描述这个离散的渲染方程&#xff1a; 要给每个三角形着色就得先判断光线有没有和它相交&#xff0c;以下是求光线和三…

3D 生成重建006-3DFuse 形状引导一致性的文生3d的方法

3D生成重建006-3DFuse 形状引导一致性的文生3d的方法 文章目录 0 论文介绍1 论文方法1.1 semantic code1.2 稀疏深度信息PointE1.3 lora部分 2 效果 0 论文介绍 在004-DreamFusion and SJC 中dreamfusion提到将2D观测结果“提升”到3D世界的任务本质上是模糊的&#xff0c;并…

1810_spacemacs缺少evil-unimpaired以及evil-ediff安装失败解决

全部学习汇总&#xff1a; GreyZhang/editors_skills: Summary for some common editor skills I used. (github.com) 安装的时候遇到evil-unimpaired找不到的问题&#xff0c;查了一下网络上很多人都遇到这样的问题&#xff0c;但是问题千奇八怪。更要命的可能是我遇到的提示跟…

【ARM AMBA5 CHI 入门 12.1 -- CHI 链路层详细介绍 】

文章目录 CHI 版本介绍1.1 CHI 链路层介绍1.1.1 Flit 切片介绍1.1.2 link layer credit(L-Credit)机制1.1.3 Channel1.1.4 Port1.1. RN Node 接口定义1.1.6 SN Node 接口定义1.2 Channel interface signals1.2.1 Request, REQ, channel1.2.2 Response, RSP, channel1.2.3 Snoop…

一个完整的初学者指南Django-part2

介绍 欢迎来到 Django 教程的第二部分&#xff01;在上一课中&#xff0c;我们安装了项目所需要的一切软件&#xff0c;希望你们在学习这篇文章之前&#xff0c;安装了 Python 3.6&#xff0c;并且在虚拟环境中运行Django 1.11。因为&#xff0c;在本篇文章中&#xff0c;我们…

并购交易:埃克森美孚商谈以250美元/股的价格收购先锋自然资源

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;埃克森美孚(XOM)正在商谈以250美元/股的价格收购先锋自然资源(PXD)。 彭博社援引知情人士的消息报道称&#xff0c;一项全股票交易最早可能于周三宣布。按照每股250美元的价格计算&#xff0c;先锋…

【动态规划】198. 打家劫舍、213. 打家劫舍 II、337. 打家劫舍 III

提示&#xff1a;努力生活&#xff0c;开心、快乐的一天 文章目录 198. 打家劫舍&#x1f4a1;解题思路&#x1f914;遇到的问题&#x1f4bb;代码实现&#x1f3af;题目总结 213. 打家劫舍 II&#x1f4a1;解题思路&#x1f914;遇到的问题&#x1f4bb;代码实现&#x1f3af;…

postman发送POST请求,模拟请求头界面的响应信息

postman发送POST请求 示例&#xff1a;微信公众平台创建用户标签接口&#xff0c;业务操作如下&#xff1a; 1、打开微信公众平台&#xff0c;微信扫码登录&#xff1a;https://mp.weixin.qq.com/debug/cgi-bin/sandbox?tsandbox/login 同时&#xff0c;我也为大家准备了一份…

求二叉树节点的个数——后序遍历

之前我们已经学习了二叉树前中后序的遍历&#xff0c;在次基础上我们利用遍历来求二叉树的节点个数 利用变量来计数&#xff1a; int BinaryTreeSize(BTNode* root) {int size 0;if (root NULL){return 0;}else{size;}BinaryTreeSize(root->left);BinaryTreeSize(root-&…

Spring5应用之事务属性

作者简介&#xff1a;☕️大家好&#xff0c;我是Aomsir&#xff0c;一个爱折腾的开发者&#xff01; 个人主页&#xff1a;Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏-CSDN博客 当前专栏&#xff1a;Spring5应用专栏_Aomsir的博客-CSDN博客 文章目录 参考文献前言事务…

指针拔尖(2)(巩固提高,全网最牛,包会,看不懂带电脑来找我)

文章目录 前言变量的声明 一、函数指针二、函数指针数组三、指向函数指针数组的指针四、 回调函数总结 前言 提示&#xff1a;本章是指针拔尖系列的终章&#xff0c;有四大知识点。 一、函数指针 二、函数指针数组 三、指向函数指针数组的指针 四、回调函数 但学习这些知识点我…

【STM32单片机】防盗报警器设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用STM32F103C8T6单片机控制器&#xff0c;使用按键、动态数码管、蜂鸣器、指示灯、热释电人体红外传感器等。 主要功能&#xff1a; 系统运行后&#xff0c;默认处于布防状态&#xff0c;D1指示灯…

Netty深入浅出Java网络编程学习笔记(三) 优化篇

目录 五、优化 1、拓展序列化算法 序列化接口 枚举实现类 修改原编解码器 2、参数调优 CONNECT_TIMEOUT_MILLIS 使用 源码分析 SO_BACKLOG 三次握手与连接队列 作用 默认值 TCP_NODELAY SO_SNDBUF & SO_RCVBUF ALLOCATOR 使用 ByteBufAllocator类型 RCVBUF_ALLOCATOR 3、RP…

2023.10.11

#include <iostream>using namespace std;class Sofa{ private:int price;int* size; public://无参构造Sofa(){}//有参构造Sofa(int p,int size):price(p),size(new int(size)){}//析构~Sofa(){delete size;}//拷贝构造Sofa(Sofa &other):price(other.price),size(n…

TensorFlow入门(二十、损失函数)

损失函数 损失函数用真实值与预测值的距离指导模型的收敛方向,是网络学习质量的关键。不管是什么样的网络结构,如果使用的损失函数不正确,最终训练出的模型一定是不正确的。常见的两类损失函数为:①均值平方差②交叉熵 均值平方差 均值平方差(Mean Squared Error,MSE),也称&qu…

[计算机网络基础]物理层详解

首先说明,基本的概述我还没写完,那部分虽然简单但是感觉要照顾到很多概念..... 以及本系列博客使用点模型并非iso模型,也并非tcp/IP模型,而是我们俗称的教学模型 也就是:物理层,数据链路层,网络层,传输层,应用层这五个,整个模型大多数是在教学中使用的,现实中基本不会这样子划…

spring容器ioc和di

spring ioc 容器的创建 BeanFactory 接口提供了一种高级配置机制&#xff0c;能够管理任何类型的对象&#xff0c;它是SpringIoC容器标准化超接口&#xff01; ApplicationContext 是 BeanFactory 的子接口。它扩展了以下功能&#xff1a; 更容易与 Spring 的 AOP 功能集成消…