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

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

[复制链接]
satoll 发布时间:2020-11-17 18:26
1.STM32Snippets
5 J: h' |3 _0 a4 H# b- Z% e# Y什么是STM32Snippets?, r8 a+ [7 R" ?2 P- Q
* b0 ~  h% H6 g3 J! f
" G) Z/ R& P* m8 h. D8 t; y
STM32Snippets可翻译为“代码片段”、“裁剪”,其实他就是我们常说的“寄存器”开发STM32的底层驱动代码。
2 h$ O; G8 X+ ?! ^3 h5 M* ^+ Q" r/ J4 z1 K/ F9 D
; m% W( U, N5 f, J" R  i
比如配置ADC引脚的代码片段:# p" i6 N7 N4 f' _3 ^0 s

  1. * L& d, Y- I6 g* U: A
  2. __INLINE void ConfigureGPIOforADC(void)
    , }4 o. v$ B, N- m& [
  3. {
    ' O3 D% N* m7 F; r& @* V7 v
  4.   /* (1) Enable the peripheral clock of GPIOA, GPIOB and GPIOC */1 d' o" \; x; |  T; v
  5.   /* (2) Select analog mode for PA1 */( W: s8 l; p' ^3 X) a- D1 j0 k
  6.   /* (3) Select analog mode for PB1 */
    ; a6 I1 b, }; p2 G+ F" w6 `( o
  7.   /* (4) Select analog mode for PC0 */
    & b, a8 u8 B8 F6 p" e3 E* \
  8.   RCC->AHBENR |= RCC_AHBENR_GPIOAEN | RCC_AHBENR_GPIOBEN | RCC_AHBENR_GPIOCEN; /* (1) */
    / t9 F# b7 a" f( [
  9.   GPIOA->MODER |= GPIO_MODER_MODER1; /* (2) */  z6 O2 t6 Y/ y" |5 l- w3 _5 y) k+ A
  10.   GPIOB->MODER |= GPIO_MODER_MODER1; /* (3) */
    , ~" c+ k  `1 P% V! V! }8 ?
  11.   GPIOC->MODER |= GPIO_MODER_MODER0; /* (4) */   j5 H% K* u3 W/ q4 r, l, e
  12. }
复制代码
6 L# D4 P$ ^+ u$ w# U1 r
4 Y7 L2 y4 }4 e/ L9 s& W" d5 Q
STM32Snippets是高度优化的示例代码集合,使用符合CMSIS的直接寄存器访问来减少代码开销,从而在各种应用程序中最大化STM32 MCUs的性能。
) [0 @9 t; X' U+ d3 N8 w5 E8 H& B: \1 R% n: `  G
STM32Snippets主要针对底层开发人员,或者从51转过来,直接操作寄存器开发的人员。 是没有经过封装,可见底层寄存器的一套示例代码。( a4 g) C+ ~, R1 F
" s. u: P5 a. c5 x( |
每个STM32系列的100多个片段演示了如何以最小的内存占用有效地使用STM32外围设备。: |' `& U, A% Z2 n
* S, g, k8 B: s2 j, m, I$ b
地址:, T1 z1 }* t0 D
https://www.st.com/en/embedded-software/stm32snippets.html8 K/ {' j8 W  L5 s8 B
(公号不支持外链接,请复制链接到浏览器打开)
8 }7 }& o1 y) ]9 F! ?% L
12.png

0 {1 i/ d' L! \0 OSTM32Snippets目前官方只提供:STM32F0和L0的示例代码包。
3 C( z' P1 \+ ^$ i  v
- p& n* |/ g! A3 @: w  _/ r提供的示例代码有点类似标准外设库风格,给大家看下F0的代码包:6 A2 V( }% ]9 U# M) e# t
13.gif

( h& D5 E* Z7 I  E2 l1 O同样也提供Keil MDK、 IAR EWARM的工程。
$ ]" K7 g  ]1 R% O- @: [# g2 C# E7 C2 o7 g; D$ p- N
2Standard Peripheral Library3 U- V; v, V8 c: b2 Q8 |6 t
Standard Peripheral Library:简写SPL,也叫标准外设库。. h& s0 f# p! R
2 V4 R) f7 H2 b4 J1 e1 n9 y
相信学习过STM32的朋友,对标准外设库都不陌生,是一组外围设备的C语言代码集合。(因为现在ST官方主推STM32CubeMX,所以停止了对SPL的更新)
1 I8 a! M: Z2 b! I- a  S7 G! M! h, q% j8 D
标准外设库是在寄存器的基础上进行了一次简单封装,主要是面向过程的嵌入式系统开发人员。
' Y* e9 z7 J1 i" S1 Y2 H# L  O  u  |" c9 x8 o1 e' y
地址:: m3 a4 x# ~1 U0 t* L- B
https://www.st.com/en/embedded-s ... eral-libraries.html# j3 t; H& @1 n! G
14.png

. B) y8 M3 f& Z) u: b目前标准外设库支持STM32F0、 F1、 F2、 F3、 F4、 L1, 不支持F7、 H7、 MP1、L0、 L4、 L5、 G0、G4等后面推出的系列。
1 J' C1 s, q" E9 M5 f
4 h- E$ C% I# \所以,不要再问:在哪里下载L0的标准外设库了。3 A0 e4 k( w; v! \+ x6 a
4 @. u" l0 y1 o6 u
3STM32Cube LL 和 HAL! ], ~5 ?' F+ p& V# B
LL:Low-Layer,底层库
3 ], _5 d; h# N4 i) f
0 o1 j& W9 q! K6 e7 @9 MHAL:Hardware Abstraction Layer,硬件抽象层库" ^4 e2 ?2 S0 V" f
7 y# \* p) ~; z5 t% N% v
STM32Cube HAL 和 LL配合STM32CubeMX工具对STM32进行开发。也是目前ST官方主推的一套开发STM32的库。
1 h" Q$ U) R- D1 C* c- O2 r" Q/ X/ M0 h1 i
HAL针对的是具有一定嵌入式基础的开发人员,HAL具有很好的移植性。
. l" N: A/ h" F' c
" p6 J  _' V6 L+ GLL库相对HAL,具有简单的结构,针对之前从事SPL(标准外设库),或寄存器开发的人员。
6 M5 b2 L  W) J" j! O
6 g! G) a. H% M1 o地址:
2 ]% m  I' d3 G
3 u& m1 O+ F- p& x" S# @https://www.st.com/en/development-tools/stm32cubemx.html
+ \* I' A% b3 I6 b0 P' o
15.png
5 \  g/ E5 D, x1 @6 ^* p
STM32Cube HAL 和 LL是目前官方主推,并重点维护和更新的库,也建议大家都学习一下。而且新出来的型号(如L5、G4等系列)没有标准外设库,只有STM32Cube HAL 和 LL库了。
- I+ @- ]( I+ v3 G) Y
' M  j! }) e4 w! l4四种库对比
$ E. R5 t$ C# p9 M# D% ^来自官方的对比信息,包含可移植性、优化、难易程度等。7 r2 P% n( K) S$ Y7 Y# @
16.png
3 _# y: X- U8 X

: T, t/ X  U6 m0 j+ u( j9 J, h其中:
. d7 l- Y3 O/ M; B4 [5 f* K5 f5 N# @' k: q3 R0 ]0 Q% V8 ~9 Q" z
Portability:可移植性# e8 `5 q% T; k7 }8 ~* j/ R
3 Y. n5 {% o; M
Optimization :优化" a, b5 w8 ~. f) s" Z

9 `, K/ C2 j4 r  [& `3 E; f9 _Easy:难易程度( S4 Y7 ~5 t, O7 f# C* `- D% E
6 y3 n% g) D, R
Hardware coverage:硬件覆盖
4 h/ e6 E# B1 ^- `6 K/ R
  B8 x6 V* A- s定位:% @/ h; s5 Z1 g; X" F5 W7 j
17.png
6 ]2 @% x8 o  f; [
支持器件:6 Q9 I  Y* `( }% {
18.png

. S+ S* t# r' g) N6 J' L6 }最近新增了STM32Cube MP1,官方没有统计上。6 `+ n9 T; P8 A# c1 i5 i5 m
! g6 X) a! y! j) L4 B$ p
库之间的转移:8 N+ M( x3 D. g& C* S0 ^- N* w6 W! D
19.png
( m7 M3 p+ j* {. u8 y# @9 U
本文就到这里,希望以上内容对你有所帮助!" [5 Z$ f$ N4 [2 J/ F- M0 U& ]/ j% ]

. S- `8 E) D% u0 i
2 a9 Q0 S! M) }
赞 收藏 评论0 发布时间:2020-11-17 18:26

举报

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