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

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

[复制链接]
STMCU-管管 发布时间:2020-12-7 13:00
STM32四种库对比:寄存器、标准外设库、HAL、LL-51
. G( S% |4 X* |
& x2 C9 F* H/ a& `' J
1.我是选择寄存器开发STM32,还是标准外设库呢?! f; ?- u0 c; S9 d" V
2.你有STM32L0标准外设库吗?( g0 q% K# M( \: ~+ _3 |# e
3.HAL库和LL库有什么差异?
( t& V- O' w- v; V6 }3 q& m3 c。。。; h. U/ k) Z9 j1 E

2 h$ f0 e3 _5 M7 j/ E
% N! n7 v. c+ N0 I! J8 x3 ~/ N
下面就来讲讲开发STM32的四种库:
* v/ L& e# W. Y  [* l5 _9 ISTM32Snippets4 `: ?! C; X* v
Standard Peripheral Library# t. k/ M/ B4 T1 B
STM32Cube LL
; t9 f, N( Z9 H( LSTM32Cube HAL
" W* M) C5 H$ {4 Y, m% Z# K; e. K# I2 j# [9 M/ Z
* ^! v9 L; T" a# b- z6 o* t( M( E) c
1STM32Snippets" k: a( q0 v- g* J5 J# ~: b. h
什么是STM32Snippets?5 ?4 R5 R( S3 E
: R3 B0 s8 p4 d, e' s7 b  ]6 N( q7 B5 Y
STM32Snippets可翻译为“代码片段”、“裁剪”,其实他就是我们常说的“寄存器”开发STM32的底层驱动代码。/ P: L4 d, v. G5 K
% ?6 g* \4 t! R  e- k
比如配置ADC引脚的代码片段:
) [3 a. O7 k  Y- s# S0 f! b, W" ^
  1. __INLINE void ConfigureGPIOforADC(void)
    ! ]1 c2 D: @" z9 o" q+ b7 p; a
  2. {
    - S$ G/ L9 \4 V  @& z4 Q
  3.   /* (1) Enable the peripheral clock of GPIOA, GPIOB and GPIOC */0 k' m# o: B$ J) k$ l+ ~! {
  4.   /* (2) Select analog mode for PA1 */0 H2 P& G: O8 i& M! `- M& R1 m
  5.   /* (3) Select analog mode for PB1 */
    / S& F$ E) h- O. b" K0 H
  6.   /* (4) Select analog mode for PC0 */
    ) [2 j) Y6 `1 d
  7.   RCC->AHBENR |= RCC_AHBENR_GPIOAEN | RCC_AHBENR_GPIOBEN | RCC_AHBENR_GPIOCEN; /* (1) */
    3 X* A' O9 m& n/ G1 M
  8.   GPIOA->MODER |= GPIO_MODER_MODER1; /* (2) */
    , k& H0 W  a6 ^
  9.   GPIOB->MODER |= GPIO_MODER_MODER1; /* (3) */
      Q. R4 B$ W' c9 s9 Y/ W
  10.   GPIOC->MODER |= GPIO_MODER_MODER0; /* (4) */ 2 u% \# d+ N  Q1 [* q
  11. }
复制代码
STM32Snippets是高度优化的示例代码集合,使用符合CMSIS的直接寄存器访问来减少代码开销,从而在各种应用程序中最大化STM32 MCUs的性能。
. ]- P; `+ @9 W4 W( b$ q& k6 m. ~5 G, r0 b% H. b7 Q, p

2 \: R! b% u5 U) b& v' {4 Q) ^STM32Snippets主要针对底层开发人员,或者从51转过来,直接操作寄存器开发的人员。 是没有经过封装,可见底层寄存器的一套示例代码。5 `( H% p; s$ h  V: o% D; }

/ H  D$ b' J' @4 |6 Z* {
; \8 F( p, ~8 ^) i9 J6 S2 ]
每个STM32系列的100多个片段演示了如何以最小的内存占用有效地使用STM32外围设备。
8 D" ]3 q1 ]6 Q! h' t  ?+ j" s5 L# j" d% o
  C) _5 o8 R, ^! b
地址:
9 u6 t' E. R5 vhttps://www.st.com/en/embedded-software/stm32snippets.html
& O/ Y3 Z0 g+ I, F7 u. A(公号不支持外链接,请复制链接到浏览器打开)/ B# c$ i+ J2 k2 C: k6 w
11.png
STM32Snippets目前官方只提供:STM32F0和L0的示例代码包。8 c0 g  n! q8 L7 Q+ A: L
12.gif
提供的示例代码有点类似标准外设库风格,给大家看下F0的代码包:3 H! |, w: s" i6 v6 T
8 y2 h( Z, j8 g/ h
同样也提供Keil MDK、 IAR EWARM的工程。
5 x; `' A* n% Q8 T9 K2 R" ^8 ^) i8 Z! j8 F
6 N$ d* o  k8 G( }8 u! s
2Standard Peripheral Library- d5 d, Q2 {/ Q$ T
Standard Peripheral Library:简写SPL,也叫标准外设库。
9 Q9 p; L, \; \
4 l1 p. t4 u2 W1 H3 r5 ~( b& t: B7 M相信学习过STM32的朋友,对标准外设库都不陌生,是一组外围设备的C语言代码集合。(因为现在ST官方主推STM32CubeMX,所以停止了对SPL的更新)
! S4 {; y/ r# u) @& Z
7 E7 o# B" h$ C# {# \2 k$ R$ D; W) T
% {7 y! r. p5 @+ t3 t  k
标准外设库是在寄存器的基础上进行了一次简单封装,主要是面向过程的嵌入式系统开发人员。
- _" a/ h4 p  G1 u7 S1 D* Q5 Y1 \" M3 o2 U$ p; D
" E2 _' A( w5 m. f$ d1 H
地址:
  D4 A* F( i0 _: yhttps://www.st.com/en/embedded-software/stm32-standard-peripheral-libraries.html
) Y& q/ Y' H; {. j
13.png
目前标准外设库支持STM32F0、 F1、 F2、 F3、 F4、 L1, 不支持F7、 H7、 MP1、L0、 L4、 L5、 G0、G4等后面推出的系列。1 b/ d1 U6 t( U
- k( a. _0 _+ s" e
所以,不要再问:在哪里下载L0的标准外设库了。
- V/ ^3 t2 T, J/ F+ k8 x: M
5 j" t$ u. z: s, [$ h: F

0 ~6 P! \0 N, H; w; p( N- u/ w3STM32Cube LL 和 HAL
8 d- d9 \% C* P) cLL:Low-Layer,底层库
  e* T" G- T7 F; [+ W. D. }2 t+ p3 v3 b* X, e3 F! h$ ~: l

" x7 d+ o4 O$ Q/ C9 t2 K  |0 y- C% hHAL:Hardware Abstraction Layer,硬件抽象层库# V: \; P) s+ S" f
* e) [  k1 d( d  m3 T( L
STM32Cube HAL 和 LL配合STM32CubeMX工具对STM32进行开发。也是目前ST官方主推的一套开发STM32的库。
  u0 d5 s- w& l7 i4 H9 V* ?3 w; g) v
HAL针对的是具有一定嵌入式基础的开发人员,HAL具有很好的移植性。
9 r/ |, t  h# v. O, ^8 o1 i
% M4 H8 x; X5 N$ ~& l/ h* fLL库相对HAL,具有简单的结构,针对之前从事SPL(标准外设库),或寄存器开发的人员。
. J/ G5 `: e- U! r. w1 a
6 I' c& F9 s5 e2 R7 W0 n地址:
9 e( C1 ]7 j) x, e3 r" f8 Ehttps://www.st.com/en/development-tools/stm32cubemx.html1 `) W: z  U- m# e7 q
14.png
STM32Cube HAL 和 LL是目前官方主推,并重点维护和更新的库,也建议大家都学习一下。而且新出来的型号(如L5、G4等系列)没有标准外设库,只有STM32Cube HAL 和 LL库了。
/ B. z; Y7 N) B7 W. Y
7 h6 t0 n8 N& s8 [& G
% G- j& h3 {7 \  e
4四种库对比
7 {) i! ~# _$ ~& c+ {9 p来自官方的对比信息,包含可移植性、优化、难易程度等。6 a, N7 ?- ~& J+ F( l7 z' o
15.png
其中:8 N8 P9 b4 `# g1 _- E+ y

6 C2 S/ r1 J1 g7 r. ~- Y: |4 k
' ?0 {' `* @) \6 Y1 X
Portability:可移植性
+ {  Z: }4 q# ^6 I! E7 OOptimization :优化* D& g3 w1 U- g4 K: |
Easy:难易程度
& R. q+ ^( d& X* @; kHardware coverage:硬件覆盖8 W9 Q! |; d% ]2 V5 W
0 q. ?# m  T$ q6 P# P
定位:7 l9 |% \! J" B' Z! j7 N6 a
16.png
支持器件:$ x  ~- G' q2 |
17.png
最近新增了STM32Cube MP1,官方没有统计上。
! ]: F/ T8 |5 ?: s5 ?- b
6 ]6 e' I- `& _6 [& A+ o库之间的转移:& ^' \4 b1 m2 b. M7 m
18.png
本文就到这里,希望以上内容对你有所帮助!
: c- z9 i% e5 ^
8 m7 p* Z- Y/ Q1 H! k& w* B4 A
6 N! ^, N( w6 \( `* W/ O  h

* W# O. {3 O/ D
2 c. b/ Y2 R& U, V8 ?2 g3 a

8 t0 G6 e$ [$ G% \% }
1 收藏 2 评论0 发布时间:2020-12-7 13:00

举报

0个回答

所属标签

相似分享

官网相关资源

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