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

STM32四种库对比:寄存器、标准外设库、HAL、LL-51

[复制链接]
STMCU-管管 发布时间:2020-12-7 13:00
STM32四种库对比:寄存器、标准外设库、HAL、LL-51
& b3 l8 X6 p- ]6 n
7 v! q# Q% K! t) M8 q1 S
1.我是选择寄存器开发STM32,还是标准外设库呢?2 C, \7 D# i( h7 Q3 t- ]3 P, P
2.你有STM32L0标准外设库吗?
9 U6 s/ |5 p  r( T2 R3.HAL库和LL库有什么差异?) z8 a  [" ^$ }$ b; R0 `# i
。。。; H* I, e; y: ^

7 Z/ R4 u3 R; H" k& Z' U
: v2 l: x' I# t% A5 v
下面就来讲讲开发STM32的四种库:
2 W( H# D3 [  d( C, DSTM32Snippets. {2 a7 q0 b: |1 z
Standard Peripheral Library7 g5 e5 w% L1 X9 `' F2 Z
STM32Cube LL
6 s* i& F# `1 X0 X! n% bSTM32Cube HAL
& ]3 \* E, D7 V6 S& v4 H
' B( k, p7 H+ Q6 k( d

  \/ Y& T# |7 w$ n1STM32Snippets
# T& e) r. @$ o什么是STM32Snippets?
- D' r- V! |: @6 W- E* M& a2 T3 U
STM32Snippets可翻译为“代码片段”、“裁剪”,其实他就是我们常说的“寄存器”开发STM32的底层驱动代码。7 X% e. Q7 S* K; m+ L/ ]

" ]3 I* y/ W4 H, A5 S* Z5 ]0 X比如配置ADC引脚的代码片段:: q5 b) T3 U' V; k$ P
  1. __INLINE void ConfigureGPIOforADC(void)( n5 B5 ^# \3 |& q3 T0 W) i- K
  2. {( y6 V. z! B! T4 ^1 D
  3.   /* (1) Enable the peripheral clock of GPIOA, GPIOB and GPIOC */
    6 d7 H( g# K; I2 ~" X* M
  4.   /* (2) Select analog mode for PA1 */
    9 e+ i/ x0 s$ U3 h: n
  5.   /* (3) Select analog mode for PB1 */3 g9 ~& N+ F  C+ |! Q: h; v8 I
  6.   /* (4) Select analog mode for PC0 */! Y# J4 [* ]/ l9 @2 d
  7.   RCC->AHBENR |= RCC_AHBENR_GPIOAEN | RCC_AHBENR_GPIOBEN | RCC_AHBENR_GPIOCEN; /* (1) */7 E6 }/ D# r6 ^% A8 P
  8.   GPIOA->MODER |= GPIO_MODER_MODER1; /* (2) */
    * t) X' y5 c6 r( }
  9.   GPIOB->MODER |= GPIO_MODER_MODER1; /* (3) */
    ) K% d) D) R- D( y$ R5 j& T
  10.   GPIOC->MODER |= GPIO_MODER_MODER0; /* (4) */
    ) \+ ]! S) x  o: \; l/ i
  11. }
复制代码
STM32Snippets是高度优化的示例代码集合,使用符合CMSIS的直接寄存器访问来减少代码开销,从而在各种应用程序中最大化STM32 MCUs的性能。
: N$ G& ~% e: ?% k
" `$ x* m( ?  X2 S6 e0 z0 L7 _
* A" z0 ]2 A4 H
STM32Snippets主要针对底层开发人员,或者从51转过来,直接操作寄存器开发的人员。 是没有经过封装,可见底层寄存器的一套示例代码。
" {% f/ j& E8 M4 Q
( I% L( n" ]2 B+ d' X1 o( R1 R( G$ l7 L

* P8 T6 ~% }$ B9 o5 m/ T每个STM32系列的100多个片段演示了如何以最小的内存占用有效地使用STM32外围设备。" c5 k7 C3 t. @5 \( A
1 [4 f. U+ {, g' i5 K9 N. u

  B7 [+ n/ N" P- _; Y8 Y. m/ _# n5 U. ~地址:* x* Q/ a/ S1 o0 v+ X3 A- w$ g8 r
https://www.st.com/en/embedded-software/stm32snippets.html
# Y) q9 \0 r$ K' [: {5 {(公号不支持外链接,请复制链接到浏览器打开)* k9 g6 K' A- P+ x1 Z
11.png
STM32Snippets目前官方只提供:STM32F0和L0的示例代码包。8 _: X# E: \& u$ B/ c' J
12.gif
提供的示例代码有点类似标准外设库风格,给大家看下F0的代码包:' g* G5 l+ ]* u. ?4 C5 C) b
' }! G  \9 t; }# ~$ f3 o
同样也提供Keil MDK、 IAR EWARM的工程。
: \2 o, {. e" N( o0 }0 Q
/ ^- g" h0 X5 _: q

9 G& O2 g; e6 X9 I7 `2Standard Peripheral Library# Q! G3 m# I$ ^/ ?6 |( Q
Standard Peripheral Library:简写SPL,也叫标准外设库。( }' C! i% U7 l" x! D
, \+ M3 \' S6 k9 l( d$ C8 }
相信学习过STM32的朋友,对标准外设库都不陌生,是一组外围设备的C语言代码集合。(因为现在ST官方主推STM32CubeMX,所以停止了对SPL的更新)
9 }: P' A5 |3 F# G# d( @1 h( p" t' |/ k' u( p/ t

/ Z, V' Z1 N0 i2 {5 {4 f标准外设库是在寄存器的基础上进行了一次简单封装,主要是面向过程的嵌入式系统开发人员。
7 ]- E8 `7 I; p- U
! X5 J9 X# g1 t: H+ U5 f1 p
- U- O- I; G" E
地址:
/ `9 D8 M* ?% P0 ghttps://www.st.com/en/embedded-software/stm32-standard-peripheral-libraries.html
/ c" q4 M0 k5 E0 G  n3 f6 @, k
13.png
目前标准外设库支持STM32F0、 F1、 F2、 F3、 F4、 L1, 不支持F7、 H7、 MP1、L0、 L4、 L5、 G0、G4等后面推出的系列。
8 R  K7 _& |4 E' c" P7 c# r4 d( E8 E7 w9 Q
所以,不要再问:在哪里下载L0的标准外设库了。
* ?% u2 M" u* V$ E6 b1 Q. C9 {/ F  v# n2 j$ v/ f

/ \; w$ |9 B- n1 l7 e3STM32Cube LL 和 HAL
) @3 ?  y$ @, zLL:Low-Layer,底层库2 d1 u3 f; a3 S- B
8 q- t/ t  N( e+ e$ w
; z! V7 O9 K9 y( a4 S; r& ~
HAL:Hardware Abstraction Layer,硬件抽象层库4 [  o# A5 k, R' g3 ]$ G- f2 A

- P+ a7 \& d% N+ L* ^* @STM32Cube HAL 和 LL配合STM32CubeMX工具对STM32进行开发。也是目前ST官方主推的一套开发STM32的库。1 w9 P0 ~9 F0 Y# P7 V

4 t0 O2 x# D, U! a- zHAL针对的是具有一定嵌入式基础的开发人员,HAL具有很好的移植性。
! @: _& B! H; f/ h0 @* |" H3 w" U9 `6 i5 _
LL库相对HAL,具有简单的结构,针对之前从事SPL(标准外设库),或寄存器开发的人员。
/ a# N/ v1 c5 n' a: y# I
- l* ^' A' T* r, X5 p. y$ b1 o地址:$ d/ V0 |  D! J9 O
https://www.st.com/en/development-tools/stm32cubemx.html8 {7 c2 x' t/ U6 }+ d
14.png
STM32Cube HAL 和 LL是目前官方主推,并重点维护和更新的库,也建议大家都学习一下。而且新出来的型号(如L5、G4等系列)没有标准外设库,只有STM32Cube HAL 和 LL库了。
' |- S: P0 o7 _# j3 t; O& y/ L7 O( b3 s; X

; F7 ?0 ~& ?5 A" t# n4四种库对比
1 k/ G# ^: |$ C. _0 @$ Z来自官方的对比信息,包含可移植性、优化、难易程度等。
$ h# L: E6 I1 G. k5 ?8 q$ Z- X. \7 t
15.png
其中:  w' l4 d" i" L. F" d( O8 Q
' R5 M% p0 Q! v; k% n/ k& ]
$ w- y/ `( ]3 n' ?3 n& ]
Portability:可移植性/ B0 K8 E( ]# W& h
Optimization :优化- U0 W5 C4 B  t; N1 P& s) ?& N
Easy:难易程度
5 Z( y3 v, Q. C7 l: {6 w) b2 _' PHardware coverage:硬件覆盖
. q2 W5 w% B+ c# F7 c& G) }! K! j7 M& x( y5 T! k2 T& }# o1 w' Y& o
定位:/ s! D3 U4 m0 p% U
16.png
支持器件:
' T" a3 x) E/ G  ]
17.png
最近新增了STM32Cube MP1,官方没有统计上。1 P5 l* p  L' M+ [5 q& C; f$ t

0 }: ]5 [  p/ s* M6 Z" j8 }: \; x, `库之间的转移:
1 Q. y9 O- z+ A" ^
18.png
本文就到这里,希望以上内容对你有所帮助!
, L6 A5 r* J$ F) k& N& C/ i/ l: V' J  N, M* f  i* f

! o' S( K3 C, r5 L# S0 D; q4 b- l4 L9 S0 ]9 B# E! P+ ~

. x/ }; @9 Q; O4 m' v" \! x5 \* r5 N# z  Q, f5 }6 l7 y
赞 1 收藏 2 评论0 发布时间:2020-12-7 13:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版