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

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

3天内不再提示

STM32标准外设库SPL转换成 Cube LL

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-03-08 12:08 次阅读

今天分享几点内容:

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”即可开始。

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

    关注

    30

    文章

    5025

    浏览量

    117704
  • STM32
    +关注

    关注

    2239

    文章

    10669

    浏览量

    348700
  • spl
    spl
    +关注

    关注

    0

    文章

    20

    浏览量

    16240
  • 标准外设库
    +关注

    关注

    0

    文章

    16

    浏览量

    3464
收藏 人收藏

    评论

    相关推荐

    STM32F0的SPL能在STM32G0上用吗?

    原来用的STM32F0系列,使用的V3.5.0的标准外设。现在改用STM32G0系列,发现官网提供的固件
    发表于 04-08 08:29

    请问BXL文件如何转换成PROTEL格式?

    BXL文件如何转换成PROTEL格式?
    发表于 12-25 07:55

    能否将Linux下的SDK转换成FreeRTOS ?

    STDK的 RT1052 的 SDK 是否已经正式发布? 能否将 Linux 下的 SDK 转换成 FreeRTOS ? 我们能使用 RT1052 来开发物质的桥梁功能吗 ?
    发表于 11-10 08:16

    怎么把int类型的数据转换成字符串?

    怎么把 int 类型的数据转换成字符串: 看项目有用 micrilib,itoa() 函数 和 sprintf() 能不能用呢?怎么用 比如把 int a=10;转换成字符串 charbuf[]=\"10\";
    发表于 11-01 08:27

    STM32的ADC采集到传感器输出的电压怎么转换成烟雾浓度?

    STM32的ADC采集到传感器输出的电压,怎么转换成烟雾浓度?单片机ADC引脚接的AOUT
    发表于 10-24 07:20

    STM32怎么采样热电偶的信号并转换成温度呢?

    STM32怎么采样热电偶的信号并转换成温度呢
    发表于 10-15 06:27

    对浮点数的运算怎么转换成整数运算?

    对浮点数的运算怎么转换成整数运算
    发表于 10-12 06:31

    将html文件转换成pdf示例

    .openhtmltopdf openhtmltopdf -core 1 . 0 . 6 com .openhtmltopdf openhtmltopdf -pdfbox 1 . 0 . 6 jsoup可以将html文件转换成输入流等,也可以遍历html的DOM节点,提取元素及样式等。 2. 示例
    的头像 发表于 10-09 16:03 673次阅读
    将html文件<b class='flag-5'>转换成</b>pdf示例

    STM32Cube LL库的巧妙之处

    STM32Cube LL库的巧妙之处
    的头像 发表于 09-27 16:26 948次阅读
    <b class='flag-5'>STM32Cube</b> <b class='flag-5'>LL</b>库的巧妙之处

    STM32标准外设库迁移至STM32Cube底层库

    成功迁移到使用STM32Cube LL API所需的所有最重要信息。它包含三个部分。• STM32 SPLSTM32Cube
    发表于 08-31 10:25 0次下载

    STM32四种库对比 STM32标准库和HAL库有什么不同?

    STM32的四种库:STM32Snippets、Standard Peripheral Library、STM32Cube LLSTM32Cube
    发表于 08-24 09:45 8632次阅读
    <b class='flag-5'>STM32</b>四种库对比 <b class='flag-5'>STM32</b><b class='flag-5'>标准</b>库和HAL库有什么不同?

    如何把视频转换成音频 视频转换成音频的原理是什么

    视频文件包含了一系列连续的图像帧,每帧都由像素组成。而音频文件则包含一系列连续的声音样本。在视频转换成音频时,首先需要将视频中的图像帧和声音样本进行编码,以便将其压缩并储存为适合音频格式的数据。
    发表于 06-30 15:15 890次阅读

    将一串LED灯带转换成大视频显示器

    电子发烧友网站提供《将一串LED灯带转换成大视频显示器.zip》资料免费下载
    发表于 06-28 11:08 0次下载
    将一串LED灯带<b class='flag-5'>转换成</b>大视频显示器

    STM32标准库、HAL库和LL库介绍

    我们在进行STM32开发的时候,使用寄存器进行开发的终究是少数,大多数人还是习惯用库函数进行开发。到目前为止,有标准外设库、HAL库、LL库 三种。本文将分别介绍以下三种库,便于大家区
    发表于 06-21 15:13 7831次阅读
    <b class='flag-5'>STM32</b><b class='flag-5'>标准</b>库、HAL库和<b class='flag-5'>LL</b>库介绍

    使用GC2000把钢网文件转换成SPI可识别的gerber文件教程

    使用GC2000把钢网文件转换成SPI可识别的gerber文件教程
    的头像 发表于 06-19 10:24 2231次阅读
    使用GC2000把钢网文件<b class='flag-5'>转换成</b>SPI可识别的gerber文件教程