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

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

    关注

    31

    文章

    5625

    浏览量

    130747
  • STM32
    +关注

    关注

    2314

    文章

    11214

    浏览量

    375399
  • spl
    spl
    +关注

    关注

    0

    文章

    22

    浏览量

    16823
  • 标准外设库
    +关注

    关注

    0

    文章

    16

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    有将高速DAC输出的电压信号转换成高速电流信号的方案吗?

    有将高速DAC输出的电压信号转换成高速电流信号的方案吗?我们目前的方案是高速DAC+运放输出电压信号,我们想在此基础上再加一级电路(外部加个小电路板)将电压转换成电流,带宽在500Mhz。
    发表于 05-13 06:20

    如何在 STM32Cube CMake 工程中添加源文件

    STM32Cube for Visual Studio Code V3 版本(例如,如下图所示的 Pre-release V3.4.11)打开,编辑,编译以及调试。但是除了 STM32CubeMX 生成的文件,还有自己开发的源文件。例如,在根目录下有个目录名为 cust
    发表于 04-15 16:07 0次下载

    三相三线 380v 电压能转换成 220v 电压吗?一文讲清原理、方法与安全规范

    ​在工业用电场景中,三相三线380V是常见供电制式,但大量单相设备、办公电器、精密仪器仅适配220V电压。很多人疑惑:三相三线380v电压能转换成220v电压吗?答案是肯定的,但必须遵循科学
    的头像 发表于 03-30 11:09 1231次阅读
    三相三线 380v 电压能<b class='flag-5'>转换成</b> 220v 电压吗?一文讲清原理、方法与安全规范

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

    在嵌入式系统(尤其是 Rockchip 平台 Android 设备)中, A/B ( Seamless Update )无缝更新是保障系统更新不丢数据、更新失败可回滚的核心机制。而 SPL
    的头像 发表于 01-20 07:07 1w次阅读
    深度解析<b class='flag-5'>SPL</b>阶段A/B分区启动:<b class='flag-5'>spl</b>_ab.c代码全拆解

    pdf转换成word文档格式乱了

    df转换成word文档格式乱了   将 pdf 转为 word 是常见的操作,但很多人发现结果很乱,文字会移位,字体变化,表格断裂,图片偏离原位.这是因为 pdf 存储的是最终的排版用于显示或打印
    的头像 发表于 11-22 10:04 1483次阅读

    pdf如何转换成pptx

    df如何转换成pptx   将 pdf 转成 powerpoint pptx 文件是很常见的需求,当你需要把现有文档内容做成幻灯片时可以这样做,本文介绍一些简单实用的步骤,可以用免费工具或内置软件
    的头像 发表于 11-22 09:42 1116次阅读

    国产MCU开始卷开发工具了?McuStudio是对STM32Cube的拙劣模仿还是真香逆袭?

    STM32Cube配置个国产芯片可能还得自己捣鼓底层包,这工具直接就给你整好了。 但也别吹得太神,槽点也得讲 ? 底层最后还是调HAL - 对于习惯了寄存器操作、追求极致效率的老法师来说,可能觉得这玩意儿
    发表于 10-31 10:18

    对UART0输入到串口的char型数据转换成16进制的寄存器常用int型相关处理

    参赛小队名:强强联合队。报名编号:CICC1316 通过UART0接受到键盘输入的数据是char型的,这时候就会又出现一个问题,如果是char型的数据,直接转换成int型我们接收到的数据就变成
    发表于 10-31 07:58

    立即在GitHub上抢先体验面向STM32U5的最新STM32Cube HAL更新

    其满足您的需求。 如何获取预览版本 面向STM32U5系列的STM32Cube HAL2预览版已在GitHub代码STM32CubeU5-V2-Preview中开放。 更新后的HAL
    的头像 发表于 10-20 17:12 1450次阅读

    怎么用LL命令读取SPI?

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

    STM32 学习达标标准:4 个维度,判断你是否真正合格

    最近在网址经常看到这样的帖子:STM32怎么就算是精通了、怎么就是完全入门了、要学到什么程度才算合格?老实说,这事真没绝对标准,但只懂外设原理、会调用库函数肯定只是入门级。就像学开车,知道方向盘刹车
    的头像 发表于 08-11 16:36 932次阅读
    <b class='flag-5'>STM32</b> 学习达标<b class='flag-5'>标准</b>:4 个维度,判断你是否真正合格

    .elf 转换成.img 后,如何知道SPI flash 中的变量地址呢?

    它的 .map 中找到内存映射项目构建完成后的文件,如下图。 数据.abcDscr 0x40030b00 0x100 ./usbabc.o 但是.elf 转换成.img 后,如何知道SPI flash 中的变量地址呢?
    发表于 07-18 07:44

    fn_u-boot-spl.bin和u-boot-spl.bin区别是什么?请问如何从u-boot-spl.bin生成fn_u-boot-spl.bin?

    fn_u-boot-spl.bin = bootrom头 + u-boot-spl.bin ;生成过程见后面代码片段; bootrom头(格式详见) + u-boot-spl.bin(标准
    发表于 07-11 07:58

    【米尔-STM32MP257开发板试用体验】——测试米尔-STM32MP257开发板外设功能

    /temp 转换成实际的温度 除以1000 就是49121/1000 = 49度 因为STM32MP257是双核,所以查看双核温度的指令为 cat /sys/class/thermal
    发表于 07-07 18:22

    STM32F4标准外设资料

    stm32f4xx.h,标准外设
    发表于 06-08 09:49 5次下载