你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

手把手教你STM32标准库代码迁移为LL库代码

[复制链接]
STMCU小助手 发布时间:2020-12-11 09:29
手把手教你STM32标准库代码迁移为LL库代码
作者 | strongerHuang
早期开发STM32,大部分工程师都是基于标准库进行开发,如果要换成LL库,且需要复用以前代码,该怎么办呢?
下面就来给大家分享一下使用【SPL2LL转换器】实现标准库代码迁移为LL库的方法,以及相关内容。
. ^5 n9 \" ^2 t9 H( C# D/ M
1关于LL库

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


+ W" U- n0 E8 j( ]' n

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


0 y3 d" l5 F7 a7 L5 \9 }5 |

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

- Q' c) l/ _0 r  q( ^

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

0 W6 P+ S, ^, S  @

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

1.1.jpg

(来源ST社区)


/ j- W3 r( v" R* D9 D/ `6 @7 |针对上图(Flash、 SRAM 占用量和执行代码的效率这三项指标对比测试)简单讲几点:
1.ROM代码和RAM占用量最小的属于直接操作寄存器WED,对于ROM资源较小的芯片具有优势;
" @8 E/ x  ?, X2 ?# S& y5 T
2.执行效率最高的也属于WED,但是代码编辑、移植性和可读写都较差。(其实汇编语言比这还有优势,一般没有特殊要求,不建议使用该寄存器编程)
; f9 g: U$ s4 Q- Y+ X
3.三项指标中,除了WED之外,SPL和Cube LL相近(不相上下),也相比Cube HAL就有优势。所以,SPL和Cube LL是四种之中最佳选择的两种。
+ Z2 R0 G) O! g- C
4.SPL和Cube LL各有特点:SPL库成熟,可读性(特别针对初学者)很好,查找问题也方便;Cube LL可以使用STM32CubeMX图形化工具直接生产初始化代码和工程,在这方便也具有明显优势。

& e5 v5 W* e- x/ H6 a2为什么要用LL库?

上面讲述了关于LL库,以及其他几种库的内容,你会发现,几种库开发STM32各有各的优势。


& `( S5 k* E# _0 ^5 H9 T

1.对于RAM和Flash这种资源比较少的STM32,除了用标准外设库之外,LL库就是一个很好的选择。! A( x" U7 f. V$ P% x4 y2 o8 M

& O. W  z" D- j( `& X! b

2.使用LL库配置的代码,相对自己参考寄存器手册配置的代码,LL库API接口更规范,更具有移植性。

; l1 P! c4 K/ E: ^) E: C3 Z* i7 X* [

3.有些芯片,没有标准外设库只有早期推出的STM32才有标准外设库,包含F0、 F1、 F2、 F3、 F4、 L1:

( O4 o' [: n* v. e

1.2.jpg


: d) m5 z  B" F: ?
新出来的(像F7、L4、G0等)这些芯片只能使用目前的HAL、LL库,或者你自己参考手册配置寄存器(不是特殊情况,我不建议自己配寄存器)。+ S/ J- J1 m& ]' d$ W) ~

9 H1 h8 E5 J9 M: V
3利用SPL2LL工具转换代码

SPL2LL,即标准外设库转LL库的转换器工具。


  n  W+ f0 u, C9 i  B! N

SPL2LL主要特点:

  • 免费
  • 显示源代码迁移状态
  • 生成C代码,适用于IAR,Keil和GCC编译器
  • 支持Windows、Linux和MacOS操作系统
    - W' |3 a% {+ G) y4 v1 i

$ f! T' I: Y" y: g- Z" v0 E4 I

网址:
' _1 y$ X3 q0 o5 c

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

网址包含相关文档和SPL2LL工具。+ O' k/ T5 n2 S$ p
1.ActivePerl下载安装在使用SPL2LL工具之前,需要安装【ActivePerl】这个工具,不然会提示错误:
  1. Error : cannot find perl, please verify that you have perl (>5.24.1) installed and added to path
    # {! P9 i) O7 K( L
  2. Then restart the application
复制代码
. Z" _& ]' G5 V. l9 k

4 w3 _* z( [& R

下载地址:

https://www.activestate.com/products/perl/downloads/

9 @# F; ^" c2 x; I* V5 t
1.3.png

1 e" y& C. t$ u; t/ ~
如果觉得下载麻烦,可以在我网盘:提取码: cp37(包含SPL2LL和ActivePerl工具)

) b( y9 R# ^- H( C8 g6 ^
2.安装
SPL2LL工具不需要安装,直接点开即可使用,但前提需要安装【ActivePerl】工具。

: g5 F4 i" s, \* Q. l
【ActivePerl】安装比较简单,一路Next下去即可。
/ k1 ~0 _; j* J# _1 u
1.4.png
# P+ C6 I* A5 R
1.5.png

( V; R3 w* Z+ K  M
1.6.png
+ f! [9 F0 j/ f9 ?) }
1.7.png
- [3 \2 i" ?, w
- k0 y& @" U! V
; k1 ~, w* ]# _3 j
3.使用SPL2LL
SPL2LL使用方法很简单,选在源和目标的型号、路径,然后执行即可。
1.8.png
$ b7 o6 o& [* d
选择好之后,点击“Migrate”即可执行转换。
1.9.png
这里需要耐心等待,比较费时间,原理就是遍历你源码中标准库,然后转换成LL库。/ ?" d) N/ `4 _0 m. Y0 O
4.转化代码前后对比
1.10.png
你会发现,即使被屏蔽的代码也进行了SPL转LL。. W. w. g2 O/ B* G, h9 L% P4 b. m) Q
主要内容就分享到了,希望对你有帮助。# ?0 E' e% l% Y( e1 [1 ~9 s
------------ END ------------
) m  m2 c* S$ `  i  m; S  D4 Z  ~
2 x3 `$ I9 R7 s: F
$ P2 r. ~% |. ~7 w6 {
赞 1 收藏 2 评论3 发布时间:2020-12-11 09:29

举报

3个回答
goyhuan 回答时间:2020-12-12 16:56:22
好文
网络孤客 回答时间:2020-12-15 14:50:27
好工具。谢谢。
goyhuan 回答时间:2020-12-17 10:27:50
用不了SPL2LL,安装了ActivePerl,一点就会闪一下就没有出现你说的界面
. q! V5 r8 Y* ]4 J* i9 f! |8 W, Y
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版