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

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

[复制链接]
STMCU-管管 发布时间:2020-12-7 13:00
STM32四种库对比:寄存器、标准外设库、HAL、LL-51
% ?/ q+ A; ~6 }/ u5 N- e7 Z. y

. z! a; z. g' Q- `: e1.我是选择寄存器开发STM32,还是标准外设库呢?1 i) u7 v( {' {5 t' `; a6 ~4 W
2.你有STM32L0标准外设库吗?
" U& x: o, z4 k# j6 ^$ P' @0 y3.HAL库和LL库有什么差异?" X/ A, @  Y( f* j% E
。。。, Z+ N7 f5 I$ X3 Y' ~5 j9 c$ a
: t& W" V) \7 ^

! P' }- {' w. J) y下面就来讲讲开发STM32的四种库:- e' u, i. ]% `
STM32Snippets
; t* t/ p  E3 W* U6 }2 C1 dStandard Peripheral Library
" v+ d4 ]) H7 ^; _- nSTM32Cube LL
7 E( ]4 H: Y4 aSTM32Cube HAL
4 [- a0 D) V+ |/ y, c$ w1 n% g4 r9 r, A, a# K, g
) i+ R. p7 l6 ~* C4 c
1STM32Snippets# m; k3 X+ X2 p1 `0 w' c! @
什么是STM32Snippets?
% c9 u+ C  {+ `$ @! Z# W* o% P
/ t& @9 X8 j6 R4 VSTM32Snippets可翻译为“代码片段”、“裁剪”,其实他就是我们常说的“寄存器”开发STM32的底层驱动代码。7 ?0 T4 h6 i6 @# F
" k9 z/ S  P: k8 J, o, n5 t
比如配置ADC引脚的代码片段:
- o& I+ S! [2 c: _* c' k
  1. __INLINE void ConfigureGPIOforADC(void)
    ! ~: n7 w& l" I& }# {2 ]
  2. {
    / h. U% S7 F( [1 B2 s: d
  3.   /* (1) Enable the peripheral clock of GPIOA, GPIOB and GPIOC */7 i8 q( S# ]2 R$ v5 `" b5 _
  4.   /* (2) Select analog mode for PA1 */
    3 N2 h8 r4 K9 n, O/ X# e, `
  5.   /* (3) Select analog mode for PB1 */8 P1 D: J$ N' V" r# o9 l
  6.   /* (4) Select analog mode for PC0 */
    ) T/ T4 i  p& V: I" Z, d8 K
  7.   RCC->AHBENR |= RCC_AHBENR_GPIOAEN | RCC_AHBENR_GPIOBEN | RCC_AHBENR_GPIOCEN; /* (1) */
    5 k9 [1 P5 L# d& ^; _# G$ s7 P
  8.   GPIOA->MODER |= GPIO_MODER_MODER1; /* (2) */
    6 Z2 Q3 X' {0 c8 ~6 q$ ?
  9.   GPIOB->MODER |= GPIO_MODER_MODER1; /* (3) */# Y9 |2 l8 ~, o+ M4 p
  10.   GPIOC->MODER |= GPIO_MODER_MODER0; /* (4) */
    5 n, y* J5 i2 N5 ^2 G
  11. }
复制代码
STM32Snippets是高度优化的示例代码集合,使用符合CMSIS的直接寄存器访问来减少代码开销,从而在各种应用程序中最大化STM32 MCUs的性能。% h0 K( T, ^# \5 i" F

9 V% u2 X' q% A5 D$ G1 ?
! H4 r. {, u; R+ T  g1 f: r
STM32Snippets主要针对底层开发人员,或者从51转过来,直接操作寄存器开发的人员。 是没有经过封装,可见底层寄存器的一套示例代码。/ p( t' s4 P+ }! S/ N" J% s2 o

+ D& u+ s  ?- L3 f, R8 r
5 P% S1 i* {1 E$ d6 J+ s
每个STM32系列的100多个片段演示了如何以最小的内存占用有效地使用STM32外围设备。
: C8 O; R) ]0 L0 z6 h+ k* _" t4 a# N* `- C2 D
: T1 r: }, `9 \5 F, D
地址:
* W" S1 P0 o. [2 G9 t+ ]! phttps://www.st.com/en/embedded-software/stm32snippets.html
, R, j+ M$ O6 Z9 ~# x9 V& f(公号不支持外链接,请复制链接到浏览器打开)
/ d: D; H: {( t5 R
11.png
STM32Snippets目前官方只提供:STM32F0和L0的示例代码包。
3 z9 C% L- G4 m9 T
12.gif
提供的示例代码有点类似标准外设库风格,给大家看下F0的代码包:% e7 J" L) _% \

) V  D1 n; ~$ a; u7 \% \3 q同样也提供Keil MDK、 IAR EWARM的工程。6 y& {& l5 J" p" B, w
1 l9 c0 t7 R! `

4 H/ K3 r. T$ {% d2Standard Peripheral Library+ h+ c6 i) z7 @4 f. @/ Z/ V
Standard Peripheral Library:简写SPL,也叫标准外设库。
* w; R" x# l/ V* E% c
1 ~( l5 U: F3 V# E! V相信学习过STM32的朋友,对标准外设库都不陌生,是一组外围设备的C语言代码集合。(因为现在ST官方主推STM32CubeMX,所以停止了对SPL的更新)- F# _- ^0 S4 Z/ j
7 w  }7 p# V, D/ r2 @
) ^2 e( ^4 f& h* M. \
标准外设库是在寄存器的基础上进行了一次简单封装,主要是面向过程的嵌入式系统开发人员。
" T$ q; l# }7 K- B& y# Q* T3 u  _- U. I& q' c
& X% g% |0 b# X. E7 ^% E4 ]
地址:* q' U6 j3 D: I0 i: J- w9 O& K
https://www.st.com/en/embedded-software/stm32-standard-peripheral-libraries.html8 j" E6 I9 i# Y( v8 H& \- \9 L
13.png
目前标准外设库支持STM32F0、 F1、 F2、 F3、 F4、 L1, 不支持F7、 H7、 MP1、L0、 L4、 L5、 G0、G4等后面推出的系列。2 t2 R0 ^& y0 s4 G$ w9 e3 p& F0 [

# E% ?( r5 ~  f* w所以,不要再问:在哪里下载L0的标准外设库了。& p% I' [5 v8 L3 @% B) r& Z; }
0 I9 U8 j0 J6 |. x4 M/ y% ?
6 D6 g- s7 t  n- M% X. h
3STM32Cube LL 和 HAL) n* W; I" R" u! b
LL:Low-Layer,底层库
! |: t# e5 `6 l7 v# `2 g4 e' P0 R) |. P2 y9 _7 k, C
9 R5 Z9 A4 _: l4 A  {# I* ]
HAL:Hardware Abstraction Layer,硬件抽象层库. Y4 y; A' P6 i: G1 @

! S0 _/ q3 s5 o+ ]* ]; USTM32Cube HAL 和 LL配合STM32CubeMX工具对STM32进行开发。也是目前ST官方主推的一套开发STM32的库。2 g2 h/ T. S7 F( c$ o

; K( {$ _; t1 R( z8 c/ i- h9 q# \HAL针对的是具有一定嵌入式基础的开发人员,HAL具有很好的移植性。
1 R) a. P/ s/ c; d1 a/ d. C
( G1 W. ~) [& I% W& Z. {LL库相对HAL,具有简单的结构,针对之前从事SPL(标准外设库),或寄存器开发的人员。
/ h0 U" Y+ ~, V+ w" w0 d% H. R4 V  E; h
地址:/ Z5 |3 O6 O; O+ n. X! |0 U- c
https://www.st.com/en/development-tools/stm32cubemx.html
2 d% G4 Y9 Q' M5 y9 l( c
14.png
STM32Cube HAL 和 LL是目前官方主推,并重点维护和更新的库,也建议大家都学习一下。而且新出来的型号(如L5、G4等系列)没有标准外设库,只有STM32Cube HAL 和 LL库了。
8 _5 i9 R. R5 l& n  R
( C7 U: G% j+ a0 R: ]; A6 A$ G1 @' U# D
& r2 o1 R5 }' e7 R, E" C' z) h6 }
4四种库对比, b% E6 W3 x- Y+ M1 L
来自官方的对比信息,包含可移植性、优化、难易程度等。+ P  S% ]$ o' P0 Y& A( k' q% `
15.png
其中:( v- j, `1 C/ z) \( b9 c
! H- N* @; z' v/ r5 V  p
* V8 [4 {# K: W
Portability:可移植性
: ^" J0 w, G$ O4 Z0 _4 uOptimization :优化
& z7 p1 I6 R( {4 z$ G: rEasy:难易程度: L( J9 }9 K; h, V
Hardware coverage:硬件覆盖
: |9 z+ E' t; N/ n' c6 M) c' F" ?6 _2 o
定位:
1 _, v( Y% J" h! p' x+ d& }
16.png
支持器件:+ F4 }# X. n# v0 @3 B# s
17.png
最近新增了STM32Cube MP1,官方没有统计上。
2 O5 o+ n4 ?0 v# q0 |# i* }2 q
9 v1 G0 S/ T+ F8 c8 k% o库之间的转移:
, ]% R. P, B$ G9 \. M
18.png
本文就到这里,希望以上内容对你有所帮助!
7 Z! q% e& T: x
- [0 g9 J6 J) s# n! O* Z5 \

3 n3 w! h: A% M# J# V) O4 Q7 q" Y2 h; Y3 W& }5 N3 \& `5 T
. c7 V5 J; S# c/ ^) ]! U) S3 B

- M3 F) m) N: V. \$ O1 P9 t) u5 r- E$ Z
1 收藏 2 评论0 发布时间:2020-12-7 13:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版