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

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

[复制链接]
STMCU-管管 发布时间:2019-3-18 13:22
STM32标准外设库迁移至STM32Cube底层库
. O! h  K$ u1 J0 ^0 M- y5 t/ T$ V) D+ i% T  a( u: o
引言
; x/ g( z6 z- L$ {: Y$ w
; r6 p: i* c2 L9 y% iSTM32价值主张倡导提供完整和全面的固件库,为开发人员提供构建嵌入式应用程序的初始框架。 9 g' d8 }! p' u
' A' I0 O1 F  c. I/ V5 d
该框架的核心是众所周知的标准外设库(SPL),所有中间件组件都使用SPL来访问STM32外设。
# n' G. u6 |, o; C. O( v. \% A, Y, {% x4 Q
多年来,STM32产品不断发展,为开发人员提供各种解决方案以平衡成本,功耗和性能,其中尤为出名的是STM32Cube底层(LL)驱动程序。 , C7 l8 a5 k0 p5 f5 g# S9 P

) |2 a% @4 ?  `8 _- D7 C对于STM32微控制器应用的设计人员而言,轻松地升级微控制器型号和/或更换为另一种固件解决方案是一件至关重要的事情。由于SPL已经停止研发,随着产品需求和规格不断增长,对所使用的各种外设提出了额外的要求,因此,这种迁移通常必不可少。
* y7 ?; w6 C+ o! V, c3 Z
$ Y3 M) _1 K! D4 r- b2 F- V, j
本应用笔记介绍了从现有使用STM32 SPL开发的基于STM32的应用程序迁移到使用STM32Cube LL驱动程序的任何其他类型的微控制器的步骤。 8 f6 j: m$ O+ {* y3 x4 v9 ]
+ Y. @- ~" T* e% Z; I
本应用笔记汇总了将基于STM32 SPL的应用程序成功迁移到使用STM32Cube LL API所需的所有最重要信息。
; I. u4 ^/ J+ G( V) E$ w
3 E6 b( N5 ~6 W0 J6 C它包含三个部分。
& Y" ]2 j+ o/ \2 ~
1 B  _0 l% h& G; p; x; Y4 n
  • STM32 SPL与STM32Cube LL架构概述:介绍两种解决方案以及二者之间的比较。
  • STM32 SPL至STM32Cube LL手动迁移:详细说明了手动迁移基于标准外设库应用程序的步骤。
  • STM32 SPL至STM32Cube LL自动迁移:利用SPL2LL-转换器迁移工具作为解决方案,自动迁移基于标准外设的应用程序。) }1 N4 h: P" k+ Z+ w7 [
, q# K( b2 H4 N$ T0 J
1 STM32 SPL与STM32Cube LL架构概述 7 c* y# u9 l( V# U, v
6 h$ [1 s% N8 z  B# q
本节介绍STM32标准外设库(SPL)和STM32Cube LL的架构,对两种解决方案之间的主要差异进行对比和总结。
; F& Q  q: d5 I$ M7 L% |1 X1 K; Q- S+ {% M3 }" c
1.1 STM32 SPL
3 R4 e# a: _2 Y* L4 A
- `/ B! U1 w( t9 f1.1.1 概述
- ~7 @. g$ I0 g6 I& g, T( J, p( |8 V: }, G. n8 V  d3 t
CMSIS
& Z! L$ S9 K9 S* P+ {7 I3 l/ t

( ]' m; `: `, x* J3 b- u# ?STM32 SPL的CMSIS由两层组成:第一层是内核外设访问层,包含名称定义、地址定义和辅助API,用于访问内核Cortex-Mx寄存器和外设。第二层是STM32外设访问层,定义了设备的所有外设寄存器、位域和存储器映射。 % v8 _0 U5 D2 R  @6 o
+ W7 D' r) A) |& H, ]2 z
STM32 SPL驱动程序
  i7 T2 W& k) e" ^
8 h: Y2 n; Y* h" w该库基于模块化编程方法构建,确保构建主应用程序的多个组件之间保持独立。使用此库即可在广泛的产品系列和评估板上实现轻松移植,只需对公共部分的代码进行最小的更改。
4 ]8 S4 c% I6 _* `. w1 Y  |& D
" A' C  ^9 F! V3 D* i
STM32 SPL驱动程序为每个外设提供驱动程序和头文件。每个驱动程序都包含一组涵盖所有外设功能的API。
: i: C1 r* D; R8 B# _$ m( f; z( T. y1 A1 v
通过检查所有库函数的输入值,还可以实现运行时故障检测。此类动态检查有助于增强软件的稳健性。因此,它适用于开发和调试用户应用程序。
8 U$ @+ L6 v$ T/ w7 N: F. Z0 k: |2 R) [
1.1.2 包含模型 0 [& O2 Q% O; J% F1 |- Y! b1 s# K
0 L* J* t0 B5 p3 ?  w- }( x
图 1 基于STM32 SPL的默认用户应用程序,介绍了文件包含模型。
; |# D& m1 `7 O8 p2 S4 S0 o% a. t/ t9 E  ?+ X3 K
1.png

5 a  I6 K# {/ o! I0 T2 L2 J4 y每个STM32嵌入式外设都有一个源代码文件stm32yyxx_ppp.c和一个头文件stm32yyxx_ppp.h。
0 W5 n: v- ]+ `# d5 I
7 C0 j% l1 [3 w; Y; O! M5 Xstm32yyxx_ppp.c文件包含使用PPP外设所需的所有固件API。 8 [1 F3 r! c- @; _5 }

; K- n, T( l$ P5 dstm32yyxx_conf.h文件被视为用户文件,根据应用程序中使用的外设进行自定义和定制。在运行任何应用程序之前,使用此文件指定与库驱动程序连接的参数集。 2 r: w! I( D$ Z/ @

0 `+ {; q7 X; E; r$ l3 |/ x表 1对用户基于STM32 SPL的应用程序所引用的上述文件进行重新分组和介绍
6 e9 R; @3 U2 W0 x
1.png
7 l  L$ _4 t! T1 g0 T
1.2 STM32Cube底层驱动程序
2 z, u9 G) B# @0 o
1.2.1 概述

: c0 p$ Y6 j# i, E# E3 c2 `7 Z% I
作为STM32Cube固件HAL的一部分,底层(LL)驱动程序旨在提供面向专家的快速轻量级层,与HAL相比,更接近硬件。与HAL相反的是,对于不关注优化访问的外设而言,LL API并不适用。
* h6 a7 m. D! G7 E3 E
底层(LL)驱动程序旨在提供:

9 R& V% |! Q8 @3 d$ c
  • 一组函数,用于根据数据结构中指定的参数,对外设主要特性进行初始化
  • 一组函数,用于使用每个字段的复位值填充初始化数据结构
  • 函数,用于执行外设去初始化(外设寄存器恢复为默认值)
  • 一组内联函数,用于直接和原子寄存器访问
  • 由于LL驱动程序既可以在独立模式下使用(不使用HAL驱动程序),也可以在混合模式下使用(使用HAL驱动程序),因此完全独立于HAL
  • 涵盖全部支持的外设特性。底层驱动程序基于STM32外设的可用功能提供硬件服务。表 2列出了底层范围涵盖的STM32嵌入式外设:
    & _/ A4 E) ^6 [; |" Q

2 a: \$ }/ R' R) a7 O; t* f% K
. K6 s3 {2 l* A' v/ K& i
..............
# h1 Z3 M3 v& O* |3 `" Y. a
想了解更多,请下载原文阅读
/ f1 H- ~  I& ]# c8 d2 u/ R3 T
, K4 m2 |! L6 ~5 ^4 Z; R, J

* Q. m. r& j$ f# N
" F; W! R. I& 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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版