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

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

[复制链接]
STMCU-管管 发布时间:2019-3-18 13:22
STM32标准外设库迁移至STM32Cube底层库
$ t2 V+ ]5 \* |8 A/ D9 f# {) i
. S2 A; [- p8 y/ [6 E引言
- g& y% c9 L0 m% G8 e# w5 p
7 d7 V! Y6 I( f& S. I9 |STM32价值主张倡导提供完整和全面的固件库,为开发人员提供构建嵌入式应用程序的初始框架。 5 C7 d9 t. t* ^; o! I7 Q

5 ~7 q& d( x( x$ [* M+ [该框架的核心是众所周知的标准外设库(SPL),所有中间件组件都使用SPL来访问STM32外设。
/ w: D9 X& z$ [
, @% y9 i/ m$ r多年来,STM32产品不断发展,为开发人员提供各种解决方案以平衡成本,功耗和性能,其中尤为出名的是STM32Cube底层(LL)驱动程序。
) ^- H5 ]4 ^( ~; u7 Y9 ]

0 ~$ }) R) x4 w' y* ~2 v对于STM32微控制器应用的设计人员而言,轻松地升级微控制器型号和/或更换为另一种固件解决方案是一件至关重要的事情。由于SPL已经停止研发,随着产品需求和规格不断增长,对所使用的各种外设提出了额外的要求,因此,这种迁移通常必不可少。
# l. P" E2 b! Y- K& J; P6 v2 _

3 ~& }" ?$ }& W/ n本应用笔记介绍了从现有使用STM32 SPL开发的基于STM32的应用程序迁移到使用STM32Cube LL驱动程序的任何其他类型的微控制器的步骤。 ) F, R: A5 r) |5 E) V2 ]5 @: a

0 e! ~4 Z- L' p! o3 l  g2 n5 q  Y本应用笔记汇总了将基于STM32 SPL的应用程序成功迁移到使用STM32Cube LL API所需的所有最重要信息。
- z1 |1 t4 V% N1 n
1 t+ e( C( f- J它包含三个部分。 * F: a/ ?1 U" Z0 g1 Z

% }* C' I* J$ J
  • STM32 SPL与STM32Cube LL架构概述:介绍两种解决方案以及二者之间的比较。
  • STM32 SPL至STM32Cube LL手动迁移:详细说明了手动迁移基于标准外设库应用程序的步骤。
  • STM32 SPL至STM32Cube LL自动迁移:利用SPL2LL-转换器迁移工具作为解决方案,自动迁移基于标准外设的应用程序。6 b, N  m; b& E

+ r! y0 D3 i+ d7 c1 STM32 SPL与STM32Cube LL架构概述
. D# k/ {1 R! f0 a
8 C5 L. T, q; Y8 h! M/ P3 W
本节介绍STM32标准外设库(SPL)和STM32Cube LL的架构,对两种解决方案之间的主要差异进行对比和总结。
  e# I8 g# M8 a- c# }& `' S6 T; @- A5 S' V
1.1 STM32 SPL
2 h: V- s9 O  S0 \2 X; I6 R( y( C4 B* l" o2 x$ p/ Q! P- |
1.1.1 概述 ; L. \* n/ r) E1 }, _3 B
$ [) \( {; O5 |2 P( u4 Z% v5 b
CMSIS   _+ {) z1 w: b; r9 A* u

5 x* C0 i8 I5 tSTM32 SPL的CMSIS由两层组成:第一层是内核外设访问层,包含名称定义、地址定义和辅助API,用于访问内核Cortex-Mx寄存器和外设。第二层是STM32外设访问层,定义了设备的所有外设寄存器、位域和存储器映射。
0 k/ |! w) a& P7 X$ b
0 U$ l9 i! Y0 d& M5 v0 eSTM32 SPL驱动程序 - h' K$ j  ]  ~9 p, e
" ^! c# W6 v" r/ C
该库基于模块化编程方法构建,确保构建主应用程序的多个组件之间保持独立。使用此库即可在广泛的产品系列和评估板上实现轻松移植,只需对公共部分的代码进行最小的更改。
' r# t/ I7 m% Z, I1 G
3 W8 ?, ]# i# y3 z* g: \
STM32 SPL驱动程序为每个外设提供驱动程序和头文件。每个驱动程序都包含一组涵盖所有外设功能的API。
/ D7 M9 @7 S  T2 y6 X$ N; R, c& S2 B, ]  v
通过检查所有库函数的输入值,还可以实现运行时故障检测。此类动态检查有助于增强软件的稳健性。因此,它适用于开发和调试用户应用程序。
: P( u, \" t, S& z; \& K1 b2 o
7 r, d2 x  W9 ^: F9 s5 @6 E1.1.2 包含模型
$ u: T8 R2 I7 Z4 P8 D6 g1 k4 j5 W
5 \: f% A4 d7 e* r/ R1 W' j图 1 基于STM32 SPL的默认用户应用程序,介绍了文件包含模型。
# {" O  _1 u& m8 z( W# k1 N- I2 }5 \$ G) ?) \, \4 x! s0 _! G* Q& I
1.png
) _4 \9 c+ A: d* |# T7 j; x
每个STM32嵌入式外设都有一个源代码文件stm32yyxx_ppp.c和一个头文件stm32yyxx_ppp.h。" }& @' \0 }  F4 [' x) S% E

8 C% ~% v  ~6 N9 sstm32yyxx_ppp.c文件包含使用PPP外设所需的所有固件API。
4 S$ V& t% d. \% C( O

9 o, L* m9 i; `0 H* X, }stm32yyxx_conf.h文件被视为用户文件,根据应用程序中使用的外设进行自定义和定制。在运行任何应用程序之前,使用此文件指定与库驱动程序连接的参数集。 5 d6 M; K7 c7 v/ B9 m+ _$ p; O+ X6 Z
6 |( W. s% E3 `. [# O8 J
表 1对用户基于STM32 SPL的应用程序所引用的上述文件进行重新分组和介绍
5 J9 k+ w; k& P. l" S2 S
1.png

/ z& [3 z8 B5 Y  E, x/ L; ~
1.2 STM32Cube底层驱动程序
( }6 @8 k6 m. x" V8 z: x
1.2.1 概述

. m2 s! B4 L- L( b% l4 t
作为STM32Cube固件HAL的一部分,底层(LL)驱动程序旨在提供面向专家的快速轻量级层,与HAL相比,更接近硬件。与HAL相反的是,对于不关注优化访问的外设而言,LL API并不适用。
) R; x; ~6 P5 ?" q( A. b; I
底层(LL)驱动程序旨在提供:

0 Y) P( Y# o; U
  • 一组函数,用于根据数据结构中指定的参数,对外设主要特性进行初始化
  • 一组函数,用于使用每个字段的复位值填充初始化数据结构
  • 函数,用于执行外设去初始化(外设寄存器恢复为默认值)
  • 一组内联函数,用于直接和原子寄存器访问
  • 由于LL驱动程序既可以在独立模式下使用(不使用HAL驱动程序),也可以在混合模式下使用(使用HAL驱动程序),因此完全独立于HAL
  • 涵盖全部支持的外设特性。底层驱动程序基于STM32外设的可用功能提供硬件服务。表 2列出了底层范围涵盖的STM32嵌入式外设:% Z/ `+ W* W4 I+ x

4 m, P, P, T' Z& Q6 {  {2 d- U- I4 O6 E5 S6 w/ P( i3 p6 s
..............

! K, o2 A0 g% ]" P& C; H
想了解更多,请下载原文阅读
9 N' t& n) i! I* ]& c

9 m& E% Q0 B! E8 @5 M
2 g: S1 a' h, Z+ @" d
% f$ Z8 g3 |) w4 \: S) r. V' e& o
收藏 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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版