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

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

[复制链接]
STMCU-管管 发布时间:2019-3-18 13:22
STM32标准外设库迁移至STM32Cube底层库5 h% S! P0 }) Z* K

; c  a% H! v' Q2 D. W4 j; w引言 6 f8 e3 v: T1 B4 g+ A& B; }

0 a( I5 a  l% ~1 ^/ R4 B4 iSTM32价值主张倡导提供完整和全面的固件库,为开发人员提供构建嵌入式应用程序的初始框架。
$ B3 ^3 J% A  a- `& A0 G' M* E1 e; R2 t: F4 t1 ^5 y6 W9 Q
该框架的核心是众所周知的标准外设库(SPL),所有中间件组件都使用SPL来访问STM32外设。
4 L7 q! ]# c  G- n
$ x( s, v+ d/ W" \多年来,STM32产品不断发展,为开发人员提供各种解决方案以平衡成本,功耗和性能,其中尤为出名的是STM32Cube底层(LL)驱动程序。
; b0 v6 m$ M( h+ _1 @& j( I
4 X( X8 K  b1 e
对于STM32微控制器应用的设计人员而言,轻松地升级微控制器型号和/或更换为另一种固件解决方案是一件至关重要的事情。由于SPL已经停止研发,随着产品需求和规格不断增长,对所使用的各种外设提出了额外的要求,因此,这种迁移通常必不可少。
# B7 X! F2 j+ [' K

/ U+ a2 [6 v& Q4 p本应用笔记介绍了从现有使用STM32 SPL开发的基于STM32的应用程序迁移到使用STM32Cube LL驱动程序的任何其他类型的微控制器的步骤。 + p6 g& @8 w7 [5 U/ c+ j4 v, }

) E2 l. Z) i8 c( ?$ u本应用笔记汇总了将基于STM32 SPL的应用程序成功迁移到使用STM32Cube LL API所需的所有最重要信息。
( A0 n" [7 p- ~1 f
0 a  b# U+ A0 Q它包含三个部分。 3 t2 R) x8 T3 X% |

/ ?9 B" _: ^' Z4 p
  • STM32 SPL与STM32Cube LL架构概述:介绍两种解决方案以及二者之间的比较。
  • STM32 SPL至STM32Cube LL手动迁移:详细说明了手动迁移基于标准外设库应用程序的步骤。
  • STM32 SPL至STM32Cube LL自动迁移:利用SPL2LL-转换器迁移工具作为解决方案,自动迁移基于标准外设的应用程序。( b+ r0 p9 J* D4 G
- O; W5 [  j7 V& ^# z
1 STM32 SPL与STM32Cube LL架构概述
7 P: @# U4 z) I" I" I" T& V
3 d; |6 D: l, W
本节介绍STM32标准外设库(SPL)和STM32Cube LL的架构,对两种解决方案之间的主要差异进行对比和总结。 % a4 i3 U% ^& S. d
; G/ M& e+ C0 ~) F0 I
1.1 STM32 SPL , b% {3 k- K' k( t
0 U/ X8 z# g, G% _: m8 J# i9 e
1.1.1 概述
/ ?6 g/ I* i/ f- y  k* o" b5 j1 f. {% m3 V) c: _
CMSIS
9 K# j6 g# L# d9 H. `# \& e0 ]
3 H1 e& l9 v1 Y1 \: C8 X0 }+ c" r2 n
STM32 SPL的CMSIS由两层组成:第一层是内核外设访问层,包含名称定义、地址定义和辅助API,用于访问内核Cortex-Mx寄存器和外设。第二层是STM32外设访问层,定义了设备的所有外设寄存器、位域和存储器映射。
' n$ C) V/ c3 N: w6 y# V: d- C# x2 ^
STM32 SPL驱动程序
9 h9 v0 n$ i4 L# h2 _8 f
' \2 d; e4 x- H/ u) P, }该库基于模块化编程方法构建,确保构建主应用程序的多个组件之间保持独立。使用此库即可在广泛的产品系列和评估板上实现轻松移植,只需对公共部分的代码进行最小的更改。
2 o1 j1 k9 h# d  V% N

4 ~  c8 x$ B" iSTM32 SPL驱动程序为每个外设提供驱动程序和头文件。每个驱动程序都包含一组涵盖所有外设功能的API。 ) q' m4 N  N( |; t$ @, O- `- m

1 G! k5 M8 r5 T通过检查所有库函数的输入值,还可以实现运行时故障检测。此类动态检查有助于增强软件的稳健性。因此,它适用于开发和调试用户应用程序。 ( s+ p, `7 N  x5 \

2 n& E% U# ^6 ^1.1.2 包含模型
5 ?6 k2 G- U2 a# E- v* W; t  h8 K# T) ~* ^  I, j) r' X7 e3 D
图 1 基于STM32 SPL的默认用户应用程序,介绍了文件包含模型。: o$ {: I+ ^) z: f4 I# j# C$ N

9 f$ b4 n# D' x$ u8 s- U
1.png

$ s1 L8 e, D1 x1 ?4 \5 E6 I& P每个STM32嵌入式外设都有一个源代码文件stm32yyxx_ppp.c和一个头文件stm32yyxx_ppp.h。
. ~# H, F' m" x. P9 v$ ?
9 L  K$ @& X! y+ w# m9 T0 E5 G" Gstm32yyxx_ppp.c文件包含使用PPP外设所需的所有固件API。
/ K5 ^4 ^$ j0 N7 U3 }* n: q9 E+ X

1 ]" _. v) V* d, T% Q! _* @stm32yyxx_conf.h文件被视为用户文件,根据应用程序中使用的外设进行自定义和定制。在运行任何应用程序之前,使用此文件指定与库驱动程序连接的参数集。
8 B2 ~" }% i* y" _! b, q+ \- i

, O" q6 l/ p$ D4 D表 1对用户基于STM32 SPL的应用程序所引用的上述文件进行重新分组和介绍
' N1 u5 ?5 w) U; w0 g& `+ _  a, X- w
1.png

3 ^+ E7 g( o/ \8 b& L1 K* K
1.2 STM32Cube底层驱动程序

. @: R5 t) d$ A% ~0 x& B
1.2.1 概述

9 H4 H' j/ H1 J! }5 D% W2 P
作为STM32Cube固件HAL的一部分,底层(LL)驱动程序旨在提供面向专家的快速轻量级层,与HAL相比,更接近硬件。与HAL相反的是,对于不关注优化访问的外设而言,LL API并不适用。

$ Q' S6 i: o  p; i! z3 s1 d2 U
底层(LL)驱动程序旨在提供:
# F$ p0 x0 Q! N3 l9 }
  • 一组函数,用于根据数据结构中指定的参数,对外设主要特性进行初始化
  • 一组函数,用于使用每个字段的复位值填充初始化数据结构
  • 函数,用于执行外设去初始化(外设寄存器恢复为默认值)
  • 一组内联函数,用于直接和原子寄存器访问
  • 由于LL驱动程序既可以在独立模式下使用(不使用HAL驱动程序),也可以在混合模式下使用(使用HAL驱动程序),因此完全独立于HAL
  • 涵盖全部支持的外设特性。底层驱动程序基于STM32外设的可用功能提供硬件服务。表 2列出了底层范围涵盖的STM32嵌入式外设:9 R+ k  e: _5 @9 P( s

# X! l/ M6 I& @( ~# Y( p( e& [
9 I2 r7 ~# D- p8 F; e. v5 C) c3 C% {+ E. q
..............
* b  i8 H/ g* E. c
想了解更多,请下载原文阅读

2 b0 ~( E2 u' {! L1 i
6 Z7 n5 j4 v6 v8 t" [& F

) e6 c6 Z' l/ x

) b6 D; ]  ]4 c/ e
赞 收藏 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管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版