历史上的今天
返回首页

历史上的今天

今天是:2025年02月01日(星期六)

2021年02月01日 | STM32标准外设库SPL转换成Cube LL

2021-02-01 来源:eefocus

今天分享几点内容:

1.介绍ST推出的三种库;


2.直接操作寄存器及三种ST库的代码性能对比;


3.STM32CubeMX直接生成Cube LL库函数的方法;


4.STM32标准外设库SPL转换成Cube LL的方法;


1介绍ST推出的三种库

1.标准外设库:Standard Peripheral Libraries,简写SPL.


2.Cube硬件抽象层库:STM32Cube Hardware Abstraction Layer,简写Cube HAL.


3.Cube底层库:STM32Cube Low-Layer,简写Cube LL.


开发STM32常见的除了直接读写(操作)寄存器之外,就是使用ST推出的库函数进行开发。


这三种库中最早推出的是标准外设库SPL,所以在推出STM32Cube HAL之前的大部分攻城狮都喜欢使用标准外设库对STM32进行开发。


随着STM32Cube HAL的推出,很多攻城狮(包括以前的,和新初学的)就开始着手转入使用STM32Cube HAL进行开发,原因在于可以使用STM32CubeMX这套图形化的工程直接生成初始化代码和相应工程文件,极大地方便和节省了攻城狮的时间。


但是,使用STM32Cube HAL开发,很多攻城狮发现一个问题,使用STM32Cube HAL开发生成的代码量比标准外设库的要大,而且执行的效率也不够高。所以,ST团队就着手开发了一套技能满足标准外设库优点,又能满足STM32Cube HAL优点的库,那就是STM32Cube LL。


STM32Cube LL是2017年推出的,目前还处于研发初期。因此,网上有许多开发者发现了一些问题,不过相信随着时间的推移,这些bug都会得到解决。


2直接操作寄存器及三种ST库的代码性能对比

Cube LL库的推出,就是因为发现了【标准外设库】及【Cube HAL库】存在的不足才推出。


因此,本节让大家了解一下直接操作寄存器、标准外设库SPL、Cube HAL库和Cube LL库这四种方法的代码性能对比。


这个测试结果来自ST社区,在网上搜索Cube LL都能找到,结果已经很明显对比出来这四种方式的差异(不要说你看不来这个结果哦)。


针对上图(GPIO翻转、 TIM PWM 输出、 ADC DMA 数据采集和 DMA M2M四组数据,分别对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图形化工具直接生产初始化代码和工程,在这方便也具有明显优势。


3STM32CubeMX直接生成Cube LL库函数的方法

这一节内容简述一下,主要就是你要学会使用STM32CubeMX这个图形化工具。


我们可以使用STM32CubeMX这个工具生产Cube HAL和Cube LL两种不同库的代码工程,就是需要通过配置,选择不同的库。


在你相关配置都就绪,准备生成代码工程之前Project -> Settings -> Advanced Settings选择LL即可(默认是HAL)。

图片


零基础的朋友可以参看下面文字:

1.STM32CubeMX介绍、下载与安装

2.STM32CubeMX使用方法及功能介绍

3.STM32CubeMX新建工程+基本IO配置过程


4STM32标准外设库SPL转换成Cube LL的方法

这ST为了使更多攻城狮使用Cube LL库,专门做了一个兼容个转换工具,就是【SPL2LL_Converter】,它可以将你之前标准库的代码转换成Cube LL库的代码,方法比较简单。


SPL2LL-Converter网址:

https://www.stmicroelectronics.com.cn/zh/development-tools/spl2ll-converter.html


在上面网址就可找到相关文档和下载转换工具。但需要提前安装一个叫【ActivePerl】的工具。


activeperl下载地址:

https://www.activestate.com/activeperl/downloads


嫌麻烦的朋友可以到我的百度网盘下载:

http://pan.baidu.com/s/1dFMFwHF


提示:微信公众号不支持外链接(复制链接到浏览器下载),网盘后期有可能失效。


转换的操作比较简单,打开转换工具,找到需要转换的源代码文件夹,设置转换后文件夹,点击“Migrate”即可开始。

图片


这个工具就是逐步浏览你的文件,并检索里面源代码是不是标准外设库,如果是则进行相应转换。因为做大量的对比工具,所以说,转换的速度相对较慢。


好啦,本文就到这里,希望对你有帮助。


推荐阅读

史海拾趣

上海超致公司的发展小趣事

上海超致半导体科技有限公司于2015年成立,在成立之初,公司就明确了专注于高端高压功率半导体(Super-Junction MOSFET、IGBT)的集成电路产品设计方向。公司拥有一支在功率半导体器件领域拥有丰富经验的设计与运营团队,这些成员大多具有超过15年的行业经验。在公司成立的早期,上海超致就成功研发出了多款具有竞争力的产品,为公司的后续发展奠定了坚实的基础。

Data Delay Devices公司的发展小趣事

在竞争激烈的电子行业中,质量管理是企业生存和发展的关键。DDD公司高度重视产品质量管理,建立了完善的质量管理体系和检测机制。公司从原材料采购、生产过程到成品检验都实行严格的质量控制,确保每一件产品都符合客户的要求和行业标准。这种对质量的执着追求使得DDD公司的产品在市场上赢得了良好的口碑和信誉。

Golledge Electronics公司的发展小趣事

企业文化是企业的灵魂和核心竞争力之一。DDD公司一直注重企业文化的建设和发展。公司倡导“创新、协作、务实、进取”的企业精神,鼓励员工勇于创新、敢于担当、追求卓越。同时,DDD公司还注重员工培训和福利待遇的改善,为员工提供了广阔的发展空间和良好的工作环境。这种积极向上的企业文化氛围使得DDD公司成为了一个充满活力和凝聚力的团队。

Connective Peripherals Pte Ltd公司的发展小趣事

在DDD公司的发展历程中,技术创新一直是其核心竞争力。公司不断投入研发资金,引进高端人才,推动产品升级换代。特别是在模拟和数字延迟线技术方面,DDD公司取得了多项重要突破。这些技术创新不仅提高了产品的性能和质量,也为公司赢得了更多客户的信任和认可。

Dowosemi公司的发展小趣事

在电子保护器件领域,Dowosemi公司以其创新的TVS二极管技术崭露头角。该公司研发团队经过数年的努力,成功开发出具有PS级响应速度、大瞬态功率和低漏电流的TVS二极管。这一技术突破大大提高了产品的性能,满足了市场对高效能过电压保护元件的需求。Dowosemi公司凭借这一优势,迅速在市场上确立了领先地位。

Greenlee公司的发展小趣事

面对电子行业的多元化需求,GREEGOO公司选择了智能家居作为其主要发展方向。公司深入调研市场需求,精准定位目标客户群体,推出了一系列具有创新性和实用性的智能家居产品。通过不断优化产品设计和用户体验,GREEGOO在智能家居领域逐渐建立了良好的口碑和品牌形象。随着智能家居市场的不断扩大,GREEGOO的销售额和市场份额也实现了稳步增长。

问答坊 | AI 解惑

89S52求助

外围图 当P1.4 P1.5 P1.6 任意一脚保持1秒低电平时。P1.2脚为高电平。 (期间有高电平出现,需重新保存1秒低电平。) 这个功能的实现,程序应该如何编写! 希望大侠们帮忙解答下!深表谢意! 最好用汇编!…

查看全部问答>

欢迎加入c8051f群

这是一个面向c8051f的技术群,有热心的朋友和积极向上的氛围,如果您加入必然给您的c8051f的学习带来极大的帮助! 群一:3318950 群二:74346610 可以同时加入!…

查看全部问答>

LED三原色原理解析

replyreload += \',\' + 759473;Timson,如果您要查看本帖隐藏内容请回复…

查看全部问答>

使用DMA+USART接收无固定长度的串行数据

在一些应用中MCU接收串行数据时,会出现接收到多个不同长度的数据流,由于STM32没有串行接收超时功能,这使得STM32的用户觉得不是很方便。为此我使用STM32的定时器实现接收无固定长度的串行数据,希望对STM32的用户有所帮助。 一、方案说明 ...…

查看全部问答>

问一个有关vc33存储器配置的问题

我现在要设计一个vc33的应用系统,存储器分配如下400000--480000 为 EEPROM 程序存储器存储区 100000--180000  为 SRAM 数据,程序存储器 在设计时该如何管理/page0,/page1,/page2,/page3这些信号线? …

查看全部问答>

出售剩余的高速DA芯片AD9772A和时钟合成芯片CDCM7005

这两种芯片都只有2片了,便宜卖给喜欢自己做东西的兄弟 这些都是做项目剩余下来得,经过我实际做板测试,确实都是原装的好芯片,AD9772A用带海绵的盒子包的好好的,当然已经开封过了,不然我自己也没法用;CDCM7005也剩下2片,包装袋没开封,保存 ...…

查看全部问答>

CCS3.3 硬仿真下clock函数使用

大家好, 最近在使用CCS3.3硬仿真时,需要使用clock函数来测试代码运行时间,请问在硬仿真下使用clock的方法(有什么需要配置或者特俗申明的)? 另外,clcok在硬环境下测试的cycle考虑了memory等一系列系统因素产生的stall吗?   在硬仿 ...…

查看全部问答>

怎么在这个程序里加蜂鸣器啊

 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity xiaoba10 isport(    clk:in std_logic;--    co  :out std_logic;--蜂鸣器 &nbs ...…

查看全部问答>

【项目外包】FPGA中实现TCP/IP IPV4或者IPV6的协议栈

FPGA中实现TCP/IP IPV4或者IPV6的协议栈 项目预算:¥ 3,000~20,000 开发周期: 45天 项目分类: 嵌入式 竞标要求: 项目标签: Xil ...…

查看全部问答>

请教delta sigma adc的一个初级问题

本帖最后由 dontium 于 2015-1-23 12:59 编辑 将一个0~3V 10KHz的正弦波输入到delta sigma  adc,ADC的参考电压是3v,以500SPS的速率采样,请问每次采到的数据会是怎样的? …

查看全部问答>