请选择 进入手机版 | 继续访问电脑版

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

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

[复制链接]
STMCU-管管 发布时间:2019-3-18 13:22
STM32标准外设库迁移至STM32Cube底层库
/ @. b+ A2 V5 B  y+ B6 J3 A4 A' c' u3 P( t0 I$ h7 V: l
引言
2 j6 N3 y* H* m! e
/ Z4 |' L4 ?, B# E& ]' T- DSTM32价值主张倡导提供完整和全面的固件库,为开发人员提供构建嵌入式应用程序的初始框架。
) F6 {) Y- t( J2 S8 d( A: n$ d2 v0 ?5 `+ y
该框架的核心是众所周知的标准外设库(SPL),所有中间件组件都使用SPL来访问STM32外设。
3 Q% |% F6 S) _! B; U9 \3 h# m7 ^* X, V7 O  W
多年来,STM32产品不断发展,为开发人员提供各种解决方案以平衡成本,功耗和性能,其中尤为出名的是STM32Cube底层(LL)驱动程序。
8 O4 A7 {# v4 \3 l! e  ?  x

2 W* z) y* m, [对于STM32微控制器应用的设计人员而言,轻松地升级微控制器型号和/或更换为另一种固件解决方案是一件至关重要的事情。由于SPL已经停止研发,随着产品需求和规格不断增长,对所使用的各种外设提出了额外的要求,因此,这种迁移通常必不可少。 $ ~% H+ x7 N" K# f6 L

) }) G% u  h* x& r+ c本应用笔记介绍了从现有使用STM32 SPL开发的基于STM32的应用程序迁移到使用STM32Cube LL驱动程序的任何其他类型的微控制器的步骤。
2 @% w  V7 @% T' I' F
" K9 Q+ g  ~' L. a
本应用笔记汇总了将基于STM32 SPL的应用程序成功迁移到使用STM32Cube LL API所需的所有最重要信息。
& v  {% P, D. n) w. }6 O' S$ B" z# r. }7 n
它包含三个部分。
- M6 |0 q0 F% |
' c2 u: \' z6 P5 h% N9 F
  • STM32 SPL与STM32Cube LL架构概述:介绍两种解决方案以及二者之间的比较。
  • STM32 SPL至STM32Cube LL手动迁移:详细说明了手动迁移基于标准外设库应用程序的步骤。
  • STM32 SPL至STM32Cube LL自动迁移:利用SPL2LL-转换器迁移工具作为解决方案,自动迁移基于标准外设的应用程序。
    ; }, N% k+ c& i% q; q8 {" t
. I# b8 Z* l5 ^2 i: }- G
1 STM32 SPL与STM32Cube LL架构概述
# I: E$ w" A+ k6 f9 [
% R/ c8 W" {0 [% N% c: `
本节介绍STM32标准外设库(SPL)和STM32Cube LL的架构,对两种解决方案之间的主要差异进行对比和总结。
- b7 z: g( ~9 T9 x5 n# H1 Q: ~& x! H& f
1.1 STM32 SPL
" s/ e$ Y+ n9 G
: p7 r% P# E' a+ z4 e1.1.1 概述
, c% y/ k  n8 ?9 |; C8 l
3 |- P2 b6 x; E! U* aCMSIS 8 T& x. q" o' f" N

0 O2 K7 N4 H  ?STM32 SPL的CMSIS由两层组成:第一层是内核外设访问层,包含名称定义、地址定义和辅助API,用于访问内核Cortex-Mx寄存器和外设。第二层是STM32外设访问层,定义了设备的所有外设寄存器、位域和存储器映射。 2 X+ _1 i) ^" T+ k9 g4 f

& L) i# L5 m% b/ [STM32 SPL驱动程序 & t6 r' N) v: F* t' z& i( l
9 [% }' a; U8 _: I- M$ T
该库基于模块化编程方法构建,确保构建主应用程序的多个组件之间保持独立。使用此库即可在广泛的产品系列和评估板上实现轻松移植,只需对公共部分的代码进行最小的更改。
; z0 @$ e+ J3 p8 K8 V) n; n& k
. s; r! _8 f" O/ t; n+ O4 O
STM32 SPL驱动程序为每个外设提供驱动程序和头文件。每个驱动程序都包含一组涵盖所有外设功能的API。
* Q* e" v& \5 A4 r3 \: d9 l1 c/ S( E4 C% G: ?: Z+ v0 z! v
通过检查所有库函数的输入值,还可以实现运行时故障检测。此类动态检查有助于增强软件的稳健性。因此,它适用于开发和调试用户应用程序。
, ?; ?. W9 z2 p' \5 }4 q
( y; m) G& r8 o  y; k6 M1.1.2 包含模型
. R2 {0 w! L4 [3 y5 {3 j/ f- q' ]' i* ?
图 1 基于STM32 SPL的默认用户应用程序,介绍了文件包含模型。
! m' X$ f- l3 B: j6 B. }- w8 w! S. a  i
1.png

( [/ I( T  s: ~$ C每个STM32嵌入式外设都有一个源代码文件stm32yyxx_ppp.c和一个头文件stm32yyxx_ppp.h。
. {) n" |8 }4 |" Y1 [0 v  E' D# M2 A1 d; }" _% G8 W$ N
stm32yyxx_ppp.c文件包含使用PPP外设所需的所有固件API。 - K7 p" s! j4 {5 K- C4 s1 Z

6 F1 `& y5 O* V9 _9 m" qstm32yyxx_conf.h文件被视为用户文件,根据应用程序中使用的外设进行自定义和定制。在运行任何应用程序之前,使用此文件指定与库驱动程序连接的参数集。
2 q; t; ~. V2 p4 i, J$ @
6 G$ K& S3 d# f( j6 Q
表 1对用户基于STM32 SPL的应用程序所引用的上述文件进行重新分组和介绍
" U$ b2 K8 U* Q! q8 A
1.png
9 T; y' `- c8 L+ ^: d4 z* h
1.2 STM32Cube底层驱动程序
* a$ {3 s  r3 b
1.2.1 概述
! d3 l  C. y# N$ q
作为STM32Cube固件HAL的一部分,底层(LL)驱动程序旨在提供面向专家的快速轻量级层,与HAL相比,更接近硬件。与HAL相反的是,对于不关注优化访问的外设而言,LL API并不适用。

% ~  E& s4 x$ C% }
底层(LL)驱动程序旨在提供:
+ @! ?- Y1 q4 W1 E
  • 一组函数,用于根据数据结构中指定的参数,对外设主要特性进行初始化
  • 一组函数,用于使用每个字段的复位值填充初始化数据结构
  • 函数,用于执行外设去初始化(外设寄存器恢复为默认值)
  • 一组内联函数,用于直接和原子寄存器访问
  • 由于LL驱动程序既可以在独立模式下使用(不使用HAL驱动程序),也可以在混合模式下使用(使用HAL驱动程序),因此完全独立于HAL
  • 涵盖全部支持的外设特性。底层驱动程序基于STM32外设的可用功能提供硬件服务。表 2列出了底层范围涵盖的STM32嵌入式外设:
    " y# x5 z4 y( H: h( P0 Q* Z3 b
  y: L  n" C, c* v* j6 V
/ y" S: i: y* J( V3 o: y
..............
; {; \1 n: F1 W% H# p$ b
想了解更多,请下载原文阅读
0 h1 X. |6 q) Q2 b( y6 e$ v

* ?7 [/ |# i$ _; ^' X

( D4 `) F) E# g7 G

6 B1 l6 P  B$ f$ V  B/ e/ Y
收藏 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 手机版