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

【中文文档】AN5044_标准外设库到STM32Cube移植介绍

[复制链接]
STMCU-管管 发布时间:2019-3-18 13:22
STM32标准外设库迁移至STM32Cube底层库
' G2 ?( y; R' h7 P" [" e9 N
4 j) M( n9 I3 V引言
6 `; e/ G8 L8 ~8 A! f6 w4 Y! Z6 I( Q3 T* U  |% R/ t. s4 s2 N
STM32价值主张倡导提供完整和全面的固件库,为开发人员提供构建嵌入式应用程序的初始框架。
3 H6 B6 h7 v& h" a/ D- W4 s! U4 S
$ J( d* Y; r$ @! t' c该框架的核心是众所周知的标准外设库(SPL),所有中间件组件都使用SPL来访问STM32外设。 8 L. W, g! X: {8 T+ A

  Z3 |% ^7 Q* N, u( _多年来,STM32产品不断发展,为开发人员提供各种解决方案以平衡成本,功耗和性能,其中尤为出名的是STM32Cube底层(LL)驱动程序。 5 h5 q% d# p/ ~2 d+ K  H; k
% Q8 M3 [- E4 q( I+ c
对于STM32微控制器应用的设计人员而言,轻松地升级微控制器型号和/或更换为另一种固件解决方案是一件至关重要的事情。由于SPL已经停止研发,随着产品需求和规格不断增长,对所使用的各种外设提出了额外的要求,因此,这种迁移通常必不可少。 , U1 k) G( R) T0 g: L5 D0 f

8 o3 |2 \% A6 g9 ~9 R本应用笔记介绍了从现有使用STM32 SPL开发的基于STM32的应用程序迁移到使用STM32Cube LL驱动程序的任何其他类型的微控制器的步骤。
: T/ r* S% I8 ?7 I: q- r
5 z. `4 T# d; l/ a
本应用笔记汇总了将基于STM32 SPL的应用程序成功迁移到使用STM32Cube LL API所需的所有最重要信息。 / E) f% ~8 ?6 v& R$ z- z* a1 O

4 k. e  G5 `3 `8 J7 e2 d它包含三个部分。
& P: Q. ], r: ?$ U% h  }3 U/ t  F7 O
  • STM32 SPL与STM32Cube LL架构概述:介绍两种解决方案以及二者之间的比较。
  • STM32 SPL至STM32Cube LL手动迁移:详细说明了手动迁移基于标准外设库应用程序的步骤。
  • STM32 SPL至STM32Cube LL自动迁移:利用SPL2LL-转换器迁移工具作为解决方案,自动迁移基于标准外设的应用程序。
    " e: t8 {! z/ S2 s5 V5 g+ B1 n
0 N% V6 K' w0 f  M3 h
1 STM32 SPL与STM32Cube LL架构概述 0 l3 m4 I* z. H2 [4 M- b
" s' H5 S, K, b) @* @/ q
本节介绍STM32标准外设库(SPL)和STM32Cube LL的架构,对两种解决方案之间的主要差异进行对比和总结。 - [" l7 ]. j0 j
2 g! j" y# e3 S. E6 T
1.1 STM32 SPL   g' }2 U4 M- J0 w6 X
  q4 |9 u8 W# b1 K" I! t+ {
1.1.1 概述 , V& R' r  B- |
8 @7 F9 O3 z- u  O% c! H' K
CMSIS
: W! d) m( ]' Q- z+ O* D" R+ G6 _) G
3 o# b5 K. n" q  I- j
STM32 SPL的CMSIS由两层组成:第一层是内核外设访问层,包含名称定义、地址定义和辅助API,用于访问内核Cortex-Mx寄存器和外设。第二层是STM32外设访问层,定义了设备的所有外设寄存器、位域和存储器映射。 7 Y( l: U8 R9 b9 }  ~8 w

& h+ t1 T* q  n  D2 N+ d2 eSTM32 SPL驱动程序 0 e* s/ x6 k. [) F. h; B

" n' J( V+ o! U& j4 f! _该库基于模块化编程方法构建,确保构建主应用程序的多个组件之间保持独立。使用此库即可在广泛的产品系列和评估板上实现轻松移植,只需对公共部分的代码进行最小的更改。 + z7 P7 J" ]+ L  P+ W

: g9 Q9 G7 A/ f' _STM32 SPL驱动程序为每个外设提供驱动程序和头文件。每个驱动程序都包含一组涵盖所有外设功能的API。 7 v$ k6 t6 m" X% j

# z- x& }( u8 e9 u通过检查所有库函数的输入值,还可以实现运行时故障检测。此类动态检查有助于增强软件的稳健性。因此,它适用于开发和调试用户应用程序。 7 m/ N7 N1 i" T* J7 r

: D) o) u% y1 \) t3 _" h( n1.1.2 包含模型
! G5 ]! ]) n; O+ A& d* S* i) Q7 _
) n6 l$ W1 o% w; m. y* Q) q% q8 X图 1 基于STM32 SPL的默认用户应用程序,介绍了文件包含模型。
$ m$ `% b2 @& p# i- m% ~+ v1 r  E/ K1 c+ Z& f8 Q& A
1.png

' C8 l$ U# R5 L8 ^8 E2 `3 B, b" `每个STM32嵌入式外设都有一个源代码文件stm32yyxx_ppp.c和一个头文件stm32yyxx_ppp.h。
, G4 z/ C, c7 a8 M! I
4 P0 L0 w  X$ L$ \8 _/ a4 S) C: Kstm32yyxx_ppp.c文件包含使用PPP外设所需的所有固件API。 % }) ?. N4 f) V5 f2 l

+ E2 Q4 w3 W" F$ R. G' O) Pstm32yyxx_conf.h文件被视为用户文件,根据应用程序中使用的外设进行自定义和定制。在运行任何应用程序之前,使用此文件指定与库驱动程序连接的参数集。 * ~$ {0 }" `: o& S# p0 k1 q1 f& B

0 Q$ v- O# ]( e# M1 t$ ?表 1对用户基于STM32 SPL的应用程序所引用的上述文件进行重新分组和介绍
: X+ z1 ]- w7 g1 }0 P
1.png
3 h3 o" C3 N% d& O: ~; p1 H/ Z+ T# a
1.2 STM32Cube底层驱动程序
9 Z; C% i& q9 A" d. C
1.2.1 概述
. k5 z0 j+ r( o; k. I
作为STM32Cube固件HAL的一部分,底层(LL)驱动程序旨在提供面向专家的快速轻量级层,与HAL相比,更接近硬件。与HAL相反的是,对于不关注优化访问的外设而言,LL API并不适用。
( e& I- f/ r$ \1 C4 m3 y3 l. r
底层(LL)驱动程序旨在提供:
/ B: b# X+ V. k4 I& |7 S' t' G& }
  • 一组函数,用于根据数据结构中指定的参数,对外设主要特性进行初始化
  • 一组函数,用于使用每个字段的复位值填充初始化数据结构
  • 函数,用于执行外设去初始化(外设寄存器恢复为默认值)
  • 一组内联函数,用于直接和原子寄存器访问
  • 由于LL驱动程序既可以在独立模式下使用(不使用HAL驱动程序),也可以在混合模式下使用(使用HAL驱动程序),因此完全独立于HAL
  • 涵盖全部支持的外设特性。底层驱动程序基于STM32外设的可用功能提供硬件服务。表 2列出了底层范围涵盖的STM32嵌入式外设:
    5 `! h, w- `% ]) Q
! g+ `  v! {! V1 y6 M

3 L# `& c5 g2 Y. ~: S+ b
..............
% e  N+ T3 i7 w. q1 R# C' {$ S1 F
想了解更多,请下载原文阅读
+ T: a$ u$ r1 n# t- Q" t
( h$ e7 w$ q% J+ u% G9 ~" w, D

( W! s! `) N( C4 w
. t8 Z: y/ [4 a
收藏 2 评论3 发布时间:2019-3-18 13:22

举报

3个回答
Kevin_G 回答时间:2019-3-19 13:02:58
值得收藏
适苦欲死 回答时间:2019-3-26 11:26:06
这个需要好好读一下
lslp88 回答时间:2019-4-3 09:21:15
mark一下

所属标签

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