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

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

[复制链接]
STMCU-管管 发布时间:2020-12-7 13:00
STM32四种库对比:寄存器、标准外设库、HAL、LL-51
' D2 M0 \% A, H- ~; `% I4 F

% o) g% {* o- {3 ?% M' Z% k. r1.我是选择寄存器开发STM32,还是标准外设库呢?- O5 O& p1 L) ?1 Y* O+ M( t
2.你有STM32L0标准外设库吗?
$ O6 i- ?8 t4 I1 G  v  {& O+ }) X: `3.HAL库和LL库有什么差异?" i5 [% V# E+ w6 B+ A
。。。
* r/ [$ G1 ~) @7 m$ B4 x1 ]% Q6 W* ?* o3 U4 f$ }

. K% b# N7 R, A, h3 t2 _下面就来讲讲开发STM32的四种库:
% l$ s) Y8 x0 p6 Y1 HSTM32Snippets
7 F9 S' U1 Q/ p3 ~Standard Peripheral Library
( i0 S3 O# X# q; DSTM32Cube LL1 c8 n0 H, S3 U
STM32Cube HAL  @: d. k7 l8 B5 X

9 j/ ]4 Y' _( q# g, F, C3 D
" h" N' o) ]* W0 n' M$ ^! E* Y9 m
1STM32Snippets; e: U" v2 M# f4 o) q9 P
什么是STM32Snippets?
! b% z6 `" {' H1 T( B+ m- \: t3 \! S# ^/ ?' a9 o: Z8 A- a
STM32Snippets可翻译为“代码片段”、“裁剪”,其实他就是我们常说的“寄存器”开发STM32的底层驱动代码。$ l; ~" R& z9 K
: W$ j5 u0 ^+ l+ J3 j4 Q
比如配置ADC引脚的代码片段:2 [: o6 r& [  O4 t
  1. __INLINE void ConfigureGPIOforADC(void)
    8 |0 h" P  e$ @: a3 n  ^! e
  2. {0 @+ v* V% S5 y
  3.   /* (1) Enable the peripheral clock of GPIOA, GPIOB and GPIOC */
    ( }; e: l* y/ X! J) p" |9 j
  4.   /* (2) Select analog mode for PA1 */
    ! B1 S9 Y( T# U, O
  5.   /* (3) Select analog mode for PB1 */+ ~* J  a" [1 R) I0 B
  6.   /* (4) Select analog mode for PC0 */
    6 R: |' ]( _2 Y% E& {, i0 l
  7.   RCC->AHBENR |= RCC_AHBENR_GPIOAEN | RCC_AHBENR_GPIOBEN | RCC_AHBENR_GPIOCEN; /* (1) */2 Y3 F: \2 ]8 G
  8.   GPIOA->MODER |= GPIO_MODER_MODER1; /* (2) */0 R: q8 `; ~8 ^% i* a1 c& ?1 T0 }
  9.   GPIOB->MODER |= GPIO_MODER_MODER1; /* (3) */
    - A, V# n! b3 F
  10.   GPIOC->MODER |= GPIO_MODER_MODER0; /* (4) */ - u) A5 z& v' u0 Y  {6 v8 O5 E( K
  11. }
复制代码
STM32Snippets是高度优化的示例代码集合,使用符合CMSIS的直接寄存器访问来减少代码开销,从而在各种应用程序中最大化STM32 MCUs的性能。9 b, S% ]1 U, w) [. r7 G# k* o

) ^4 t, u6 \5 i# Z3 v' R% `

7 e+ ?2 C; G; r8 T' w0 wSTM32Snippets主要针对底层开发人员,或者从51转过来,直接操作寄存器开发的人员。 是没有经过封装,可见底层寄存器的一套示例代码。7 Q# R" i# g! Y+ n+ W

/ y; w5 H$ U; N
. w+ C- ~' `8 G
每个STM32系列的100多个片段演示了如何以最小的内存占用有效地使用STM32外围设备。
4 V' P' Z& I9 T% f" m) @
1 F5 |* l: Q9 K$ H+ q' F

. A/ }) M% V- m" E0 N' J+ F8 g地址:. r' H  W5 ]& l# ]
https://www.st.com/en/embedded-software/stm32snippets.html
. u% Q8 g( c( G7 v: j# K(公号不支持外链接,请复制链接到浏览器打开)
3 o: j5 U0 r" G* \8 r6 H
11.png
STM32Snippets目前官方只提供:STM32F0和L0的示例代码包。
7 H  A/ h% c; T- S) k( x- p
12.gif
提供的示例代码有点类似标准外设库风格,给大家看下F0的代码包:
  v' V5 K3 E8 a: C: L) f* O( g* P6 l# G
同样也提供Keil MDK、 IAR EWARM的工程。
, V. Z; @- t. C9 `/ l+ q
  @' X0 |! c' o& ]/ S

. v, z5 R! H. i2Standard Peripheral Library
8 C+ y* _$ J( z) f; ^Standard Peripheral Library:简写SPL,也叫标准外设库。
8 V6 I- c& p9 x# }- D
/ C3 ]$ _4 c) N( T! t# _5 |相信学习过STM32的朋友,对标准外设库都不陌生,是一组外围设备的C语言代码集合。(因为现在ST官方主推STM32CubeMX,所以停止了对SPL的更新)3 K% R% z1 i; O! x0 x' w: J
5 b/ {4 z% H0 g- x6 C+ @

7 r% U5 z/ C* _& Z/ {标准外设库是在寄存器的基础上进行了一次简单封装,主要是面向过程的嵌入式系统开发人员。9 l3 R- i0 J! c% N* R
- m7 s( U7 J( w3 p+ `
# X9 Z0 T- S+ T1 V( F
地址:
$ i' T* ~1 b. D+ _! C3 W7 D4 {https://www.st.com/en/embedded-software/stm32-standard-peripheral-libraries.html
3 y( Q$ y! V5 o
13.png
目前标准外设库支持STM32F0、 F1、 F2、 F3、 F4、 L1, 不支持F7、 H7、 MP1、L0、 L4、 L5、 G0、G4等后面推出的系列。; R( m+ M% _' p) O" U) H- D, c

3 p2 R+ O# b) x' w! A所以,不要再问:在哪里下载L0的标准外设库了。3 K: E0 @* v6 z! N

; p3 K! {3 A" H$ l6 @! n
* V" L3 O; U: [) |; `: s
3STM32Cube LL 和 HAL
' _! O& `7 X& j0 U9 WLL:Low-Layer,底层库8 ]  w  l1 h. C! h
, J; m4 Z$ C  Y2 X, r8 n

6 m/ [1 U, U8 f) |# BHAL:Hardware Abstraction Layer,硬件抽象层库, }! i7 v+ P+ S6 b

* H9 u$ _% b# v3 ?1 M8 v* qSTM32Cube HAL 和 LL配合STM32CubeMX工具对STM32进行开发。也是目前ST官方主推的一套开发STM32的库。
& H  k  a8 A  m7 C* k  i3 u3 s" U) T" M: _
HAL针对的是具有一定嵌入式基础的开发人员,HAL具有很好的移植性。& Y5 M0 n1 o8 @- k

, U* g% H' G. D+ Z5 ^LL库相对HAL,具有简单的结构,针对之前从事SPL(标准外设库),或寄存器开发的人员。
7 E6 R; z  T  p8 k  v
& g7 T) ], J- D1 t$ `% Y地址:
7 a) y$ w8 X+ ^5 o3 k( Mhttps://www.st.com/en/development-tools/stm32cubemx.html
. w: P$ {5 v9 w6 E% O
14.png
STM32Cube HAL 和 LL是目前官方主推,并重点维护和更新的库,也建议大家都学习一下。而且新出来的型号(如L5、G4等系列)没有标准外设库,只有STM32Cube HAL 和 LL库了。- `1 O4 W+ B3 k: g$ V" z% j( W

4 ~  ^9 J) @* M; _2 s) p, B
5 y" ~$ U4 X5 u. v6 K
4四种库对比- [8 ]! _1 B9 Z' [
来自官方的对比信息,包含可移植性、优化、难易程度等。
& x2 x# E' F! {0 y5 R
15.png
其中:9 @7 S- T5 ]" b+ t, }' {

/ J+ C. q/ p- o/ V

0 {  T3 ^( t  U* w/ yPortability:可移植性
; U/ |; M4 P7 H  K# {Optimization :优化0 e# r2 `9 O. _# _, V0 L
Easy:难易程度* i; z+ b' A2 O4 x( j7 _8 G
Hardware coverage:硬件覆盖
( L8 e7 {4 G5 q) E+ X) }! e  F1 Y0 ]  p; z( F$ C7 Y) @: e; l/ O
定位:* O- n. R5 L4 X1 g+ d
16.png
支持器件:
! c# C( R- }# p7 m8 K
17.png
最近新增了STM32Cube MP1,官方没有统计上。
, t3 D8 I2 `4 `/ q* K
  l9 C# N9 \( o8 [库之间的转移:( c3 s1 Z; G, Z" J+ R0 z
18.png
本文就到这里,希望以上内容对你有所帮助!2 y0 ^% ]. T7 B! f( N
+ I8 ^4 e0 k* p( @7 `

# ~! i  K+ f& J' G$ C8 o  {0 `0 H* f2 Y/ `) Q! c0 n# Y* K

) ^! L/ ^9 T4 n7 ]+ p: p: ?
( }8 D/ K; r6 a) T" f
1 收藏 2 评论0 发布时间:2020-12-7 13:00

举报

0个回答

所属标签

相似分享

官网相关资源

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