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

如何从 STM32F10xxx 固件库 V2.0.3 升级为 STM32F10xxx 标准外设库 V3.0.0

[复制链接]
STMCU小助手 发布时间:2022-7-15 21:23
介绍3 A, ], e) v% S, V7 ]
本文的目的是介绍如何把基于STM32F10xxx固件库V2.0.3(FWLib)开发的应用程序升级到STM32F10xxx标准外设库V3.0.0。本文的目的不是提供2个版本的详细信息,而是重点介绍2个+ R, @- f0 A6 `- s  Q2 y, t+ V
版本之间的差异。9 }+ h3 D9 E: `$ C$ U+ b
注意:文中,除非特别指明,固件库(FWLib)代表STM32F10xxx固件库V2.0.3,而标准外设库(StdPeriph_Lib)代表STM32F10xxx标准外设库V3.0.0。术语表
0 ?* ^5 x; _! r5 U" j2 G小容量产品是指闪存存储器容量在16K至32K字节之间的STM32F101xx,STM32F102xx和STM32F103xx微控制器。% ]% e* d( c& f
中容量产品是指闪存存储器容量在64K至128K字节之间的STM32F101xx,STM32F102xx和STM32F103xx微控制器。- e8 m) T/ ]" w/ M
大容量产品是指闪存存储器容量在256K至512K字节之间的STM32F101xx和STM32F103xx微控制器。
; h+ k: }) b% Y2 b% y( S) Y& Z
, }" R, }- z6 v8 [
1 O3 ]) B" p' T1 _' b& c
1.为什么把STM32F10xxx固件库(FWLib)V2.0.3升级为标准外设库(StdPeriph_Lib)V3.0.0
' |: _. R/ Q8 L( xSTM32F10xxx固件库(FWLib)V2.0.3是一个完整的固件包,它适用于STM32F10xxx小容量,中容量和大容量产品。固件库由程序,数据结构和宏组成,覆盖了所有外设的特征,还包括了全部标准外设的驱动和一系列示例程序。5 Q8 A# x% S7 U- P7 z2 @" T
STM32F10xxx标准外设库(StdPeriph_Lib)V3.0.0由固件库(FWLib)V2.0.3升级而来:
% x1 K! E2 O, I' w3 j$ n● 它使库与CortexTM微控制器软件接口标准(CMSIS)兼容
7 @: ^. ^% u' i0 M* u● 改进了库包的体系结构
( F: u$ ^. x- q  X3 U3 _● 源代码符合Doxygen格式! y, P3 l$ P* v  L. Z+ n
● 升级不影响STM32外设驱动的API(应用编程接口)
9 X  D! U" h2 d0 d$ C+ L: d6 a6 ~- F注意:标准外设库(StdPeriph_Lib)V3.0.0只对STM32F10xxx CAN驱动进行了升级,目的是支持即将面世的STM32F10xxx连接型产品(带双CAN)。
  y% q2 Z4 Y; Z/ \要升级到STM32F10xxx标准外设库V3.0.0,用户只需要更新:
4 l/ {/ b/ c7 k7 ]$ I● 与工具链相关的文件( E( k; U- R) B$ M1 r( ]
● 项目(project)设置
+ l# N% ~7 Z& P- E) T: Y7 O● 库文件的位置
  W& @0 [0 }2 i( U, N# @3 s● 用户无需改变或者更新应用程序的代码; M5 \1 s! q8 k9 n0 e
下文详细描述了标准外设库(StdPeriph_Lib)的所有更新细节。" p" R, W2 ]4 D+ _& h5 p
1 V; U3 L; G7 Q
1.1 兼容ARM® Cortex-M3TM微控制器软件接口标准(CMSIS) 9 u, q# H2 w/ G3 r7 f- y
CMSIS可以解决用户在基于Cortex-M0/Cortex-M1或者Cortex-M3内核的微控制器上进行软件开发时可能遇到的种种问题。CMSIS还可以扩展,应用在将来的Cortex-M系列处理器内核上(标准称为Cortex-Mx)。CMSIS是ARM公司与多家不同的芯片和软件供应商一起紧密合作定义的,提供了内核与外设、实时操作系统和中间设备之间的通用接口。5 S8 A5 a3 t2 j0 h8 c" u7 m2 y

$ D2 D7 t7 A  l. ]2 A% p9 R0 V' r
1.1.1 CMSIS描述
# p# ^2 n4 L) k; `# GCMSIS可以分为多个软件层次,ARM提供了下列部分,可用于多种编译器:  E1 r$ J0 b2 R2 Z$ X/ ]: i) v
● 内核设备访问层:包含了用来访问内核的寄存器设备的名称定义,地址定义和助手函数。
% a* G+ C* i3 H" c* n同时也为RTOS(实时操作系统)定义了独立于微控制器的接口,该接口包括调试通道定义。
' ?! c& a8 U) `! b● 中间设备访问层:为软件提供了访问外设的通用方法。芯片供应商应当修改中间设备访问层,以适应中间设备组件用到的微控制器上的外设。目前中间设备访问层仍处于开发过程中,本文不做详述。5 w+ S- S6 U3 T/ D+ f
芯片供应商扩展下列软件层:1 ^' n+ v* B  G6 `
● 微控制器外设访问层:提供片上所有外设的定义。
5 Y4 a. J( C6 T3 n● 外设的访问函数(可选):为外设提供额外的助手函数。
  {0 F( X+ K1 uCMSIS为Cortex-Mx微控制器系统定义了:7 q, d+ J5 Z" s9 h! i
● 访问外设寄存器的通用方法和定义异常向量的通用方法。
, ]3 n. g( D7 ?2 B* _& M0 e: _+ l& R● 内核设备的寄存器名称和内核异常向量的名称
& ?* t& D% z* [● 独立于微控制器的RTOS接口,带调试通道( _! G5 ~& v4 q$ p9 V
● 中间设备组件接口(TCP/IP协议栈,闪存文件系统) & b6 k$ L9 u' ^7 @) K: l
' v: O( X! E/ `. O" g
1.1.2 CMSIS结构
$ U" _; ]: g0 m) m) C6 H6 J7 i# o2 E* d; R7 I: S
}I61[8V)CD53GWT4`H_6SH9.png + I7 A3 H1 M5 e8 y
/ I) g. q# X0 N& u$ ^; Q. q& v
CMSIS-外设访问层的文件4 o! Q( M) w/ q2 h' m5 b+ S; P
独立于编译器的文件:* t: E- ^) j8 L* ~; x& j, k1 z
● Cortex-M3内核及其设备文件(core_cm3.h + core_cm3.c) ( p' c2 F4 A% {# }# Y. G' A
─ 访问 Cortex-M3 内核及其设备:NVIC,SysTick 等 ) }% M$ K% e2 F
─ 访问 Cortex-M3 的 CPU 寄存器和内核外设的函数6 e: v6 k' X5 r
● 微控制器专用头文件(device.h)
0 G7 l3 H5 X, k8 x' U─ 指定中断号码(与启动文件一致) % U8 a! S8 Q% J9 `2 A( S
─ 外设寄存器定义(寄存器的基地址和布局) ! `; K. f0 G$ w1 F
─ 控制微控制器其他特有的功能的函数(可选) " d# m0 Y  O( `; a  W9 _( C
● 微控制器专用系统文件(system_device.c)
( ?, t6 ?8 K% r' c─ 函数 SystemInit,用来初始化微控制器8 [' `3 Y. `1 y: A% }
─ 函数 Sysem_ExtMemCtl,用来配置外部存储器控制器。它位于文件startup_stm32f10x_xx.s /.c,在跳转到 main 前调用8 o) O) z& H+ D3 u1 N
─ SystemFrequncy,该值代表系统时钟频率
8 D4 i3 k" w& u2 y0 P9 O: F─ 微控制器的其他功能(可选)
; U# {  R& _' m编译器供应商+微控制器专用启动文件
6 ]5 p# F( e* q$ j2 w8 }2 R● 编译器启动代码(汇编或者C)(startup_device.s) 9 h4 W$ o2 b6 j$ }
─ 微控制器专用的中断处理程序列表(与头文件一致)
& z2 E% K9 s0 j─ 弱定义(Weak)的中断处理程序默认函数(可以被用户代码覆盖)
5 `( a9 k+ l4 h9 T8 I0 P" q* L注意:关键字weak指示编译器弱导出符号。该关键字可以用于函数和变量的声明,以及函数的定义。
+ ]% {8 K6 i6 E* B, E使用 __weak 定义的函数将弱导出其符号。除非将相同名称的非弱定义函数链接到相同映像上,否则弱定义函数的行为与正常定义的函数类似。 如果非弱定义函数和弱定义函数位于相同映像中,则会将对弱定义函数的所有调用解析为对非弱函数的调用。如果有多个可用的弱定义,链接器将选择其中的一个弱定义供所有调用使用。& _  N) d6 j( k7 {- Y
1.1.3 STM32 固件库V2.0.3 和CMSISV1.10 对比9 _7 l" s3 T4 B
CMSIS对STM32F10xxx固件库(FWLib)的某些功能采用了不同的实现方法。下面列出主要的区别:
2 s: G+ {& g9 C. G  t● 使用标准C类型,文件<stdint.h>
6 z2 n# o5 s# l: _$ z1 W● 对每一个Cortex-M3异常和STM32的IRQ,有:
+ T. e7 J, c% ^, ]* C. W─ 异常服务程序带后缀_Handler,中断服务程序带后缀_IRQHandler。 # z9 _1 e/ F% ]# a
─ 弱定义(Weak)的默认异常/中断服务程序,包含一个无限循环* i1 [: I: c$ ~* ]) |6 {3 H: g, `
─ 带_IRQn 后缀的中断号码“#define”
$ ?6 n* c( t# e8 W, l0 U+ }● 启动文件更名为”startup_stm32f10x_xx.s/.c”,其中xx可以是hd,md或者ld,分别对应大容量,中容量,小容量产品。2 E9 n( O8 G" r, x
● 只提供精简的NVIC和SysTick函数,其他一些常用函数作为一个新的驱动加入STM32F10xxx标准外设库,文件命名为misc.h/.c。
2 J8 ^6 l4 k" ~" \● 某些宏的名字与STM32F10xxx固件库V2.0.3中的相同功能宏不同(见表1)
* A/ }: b7 v: l! n" \: f# K, Z; b2 _$ c+ T2 f8 k% W

1 n6 o- _! D3 G6 b) S& [ FUXEHCENRNWEJN(3PO`J2LF.png
/ K9 v% q: I( O& o
& d; \  p% [5 O' \& r, B' o

& D" K" o) G3 m, ~完整版请查看:附件, |2 I+ D' R$ T0 V. C# b8 F, p" m6 e

( @) I, q0 h0 j% Y* P
( j- g( F- a" W3 o- n6 G, I  g5 j3 i: D& I; r

CD00228916_ZHV1.pdf

下载

1.28 MB, 下载次数: 4

赞 收藏 评论0 发布时间:2022-7-15 21:23

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版