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

STM32F10x的复位与时钟控制的设计

[复制链接]
sayuenala 发布时间:2016-6-26 12:11
RC(Reset and Clock Control)复位和时钟控制的设计(by 杭州山不高)
" A. U# T5 g' `* y6 |STM32F10x支持三种复位形式,分别为系统复位、上电复位和备份区域复位。
: g+ g+ T  i+ o; ]- i5 D$ [8 h系统复位将复位除时钟控制寄存器CSR中的复位标志和备份区域中的寄存器以外的所有寄存器。9 g  {0 k; I/ e& H" `
当以下事件中的一件发生时,产生一个系统复位:
+ t1 ^. H, E: c! g7 J0 e4 L8 j0 G1. NRST管脚上的低电平(外部复位) 1 @" g$ a6 l8 u# ~: U
2. 窗口看门狗计数终止(WWDG复位)
) E: a, \0 h! z" f3. 独立看门狗计数终止(IWDG复位) 9 U' r% j; |8 v  u" O6 ]- u
4. 软件复位(SW复位)
$ m" V  }6 a& h/ L5. 低功耗管理复位$ i$ A) p! U0 e6 g2 o7 R. ]2 F" S
可通过查看RCC_CSR控制状态寄存器中的复位状态标志位识别复位事件来源。& C" G: t4 H; h" F7 l

6 J  m' g" f. `5 v8 r软件复位
; Q- ]0 z, ~$ {& i  g1 ?通过将Cortex?-M3中断应用和复位控制寄存器中的SYSRESETREQ位置’1’,可实现软件复位。  \" a0 K$ O% K' H, u( @( r
( ^" Q  {0 R/ I# }: d) v
低功耗管理复位
/ ~! g" s/ V1 {3 m# a5 G3 L* ^* j/ t在以下两种情况下可产生低功耗管理复位: * Q4 e5 s1 J9 N2 E! i% x
1. 在进入待机模式时产生低功耗管理复位: ) |0 i1 M' w/ p; m
通过将用户选择字节中的nRST_STDBY位置’1’将使能该复位。) _/ P2 b5 y1 v( U  k; L
这时,即使执行了进入待机模式的过程,系统将被复位而不是进入待机模式。 : S1 A- g2 @, a
2. 在进入停止模式时产生低功耗管理复位: ) W" y  Y6 S: o; F
通过将用户选择字节中的nRST_STOP位置’1’将使能该复位。* e$ A6 p. ^% Q  C
这时,即使执行了进入停机模式的过程,系统将被复位而不是进入停机模式。
7 b; Y& |3 a) @) R
/ \. [. s. R8 E) \% ~6 g电源复位 : d, b1 P  I+ E* f8 H# z$ F
当以下事件中之一发生时,产生电源复位:
# ^" E9 W' L; c8 y1. 上电/掉电复位(POR/PDR复位) : w& x5 @) p/ }( t
2. 从待机模式中返回
! @; _- o9 G, j4 Q- o% p. G电源复位将复位除了备份区域外的所有寄存器。* q. I+ [/ i  X! C
备份区域拥有两个专门的复位,它们只影响备份区域。" h/ F$ r: a9 e

! U/ U1 ~% ^& ~: a& `备份域复位
2 `% w" V4 ?$ n9 I  c5 P/ ]2 z6 c当以下事件中之一发生时,产生备份区域复位。 - ^) O! G$ z$ @% C- ^' r3 u
1. 软件复位,备份区域复位可由设置备份区域控制寄存器RCC_BDCR中的BDRST位产生。
0 A5 i) }0 y8 b2. 在VDD和VBAT两者掉电的前提下,VDD或VBAT上电将引发备份区域复位。; ]6 w$ C- R9 D5 I4 W% B
$ X( b1 c3 h& h# w  D* L# }2 S& v
HSE(High Speed External)高速外部时钟信号
" r/ ^  Y$ M2 B/ \5 K" ^+ T在时钟控制寄存器RCC_CR中的HSERDY位用来指示高速外部振荡器是否稳定。
# _' [$ q, t' `7 z5 j+ s! f在启动时,直到这一位被硬件置’1’,时钟才被释放出来。
* f: A2 T# @8 ^! D8 h如果在时钟中断寄存器RCC_CIR中允许产生中断,将会产生相应中断。
1 ^: k0 m+ A1 E8 H& j1 DHSE晶体可以通过设置时钟控制寄存器里RCC_CR中的HSEON位被启动和关闭。
$ `! V0 Z9 X0 h
9 [' L- {4 u" ]5 d) e

时钟

三种不同的时钟源可被用来驱动系统时钟(SYSCLK): ) c7 x! I. n# c, p9 ]& {
●  HSI振荡器时钟
1 V1 K* a) w- @+ H8 W. r●  HSE振荡器时钟
* y3 ]/ l$ G3 S) [- y) P% B, t5 M●  PLL时钟
" U2 B! m- L1 ]2 k6 y- P这些设备有以下2种二级时钟源: ) F" Z% j4 [' {) O5 H* D
●  40kHz低速内部RC,可以用于驱动独立看门狗和通过程序选择驱动RTC。& L& i! C* b  H/ j+ r
RTC用于从停机/待机模式下自动唤醒系统。 ' F0 a9 p8 [+ ^0 U% \
●  32.768kHz低速外部晶体也可用来通过程序选择驱动RTC(RTCCLK)。
8 |) {4 a, G/ O' R' i) p: H当不被使用时,任一个时钟源都可被独立地启动或关闭,由此优化系统功耗。9 {: ]2 C# n4 ]' |* t3 g# Q
STM32F10x的复位与时钟控制的设计.jpg
( g- l) i) M. o6 }: u" i4 ZHSI(High Speed Internal)高速内部时钟信号/ q5 E; u( l* w2 S
HSI时钟信号由内部8MHz的RC振荡器产生,可直接作为系统时钟或在2分频后作为PLL输入。3 y3 p8 U4 |8 N9 n& ^" Q
HSI RC振荡器能够在不需要任何外部器件的条件下提供系统时钟。  }0 @9 X" K* ]& Z
它的启动时间比HSE晶体振荡器短。然而,即使在校准之后它的时钟频率精度仍较差。
8 N8 @. U8 T9 `+ L% v% }系统复位时,工厂校准值被装载到时钟控制寄存器的HSICAL[7:0]位。
$ L4 S; R/ f) w3 |如果用户的应用基于不同的电压或环境温度,这将会影响RC振荡器的精度。
( P5 p9 V+ ^9 K7 ]/ q( j+ B你可以通过利用在时钟控制寄存器里的HSITRIM[4:0]位来调整HSI频率。
' T- L  g. J, Y* D4 L时钟控制寄存器中的HSIRDY位用来指示HSI RC振荡器是否稳定。/ A9 O3 x: F; r" b! A5 D1 u
在时钟启动过程中,直到这一位被硬件置’1’,HSI RC输出时钟才被释放。8 G6 R( Q9 _3 ~) O5 m2 O4 x
HSI RC可由时钟控制寄存器中的HSION位来启动和关闭。
. `" p( ]& o7 `. ^7 y如果HSE晶体振荡器失效,HSI时钟会被作为备用时钟源。
+ K! Z3 D# b- m; d( U  O- C
1 W: H! O4 A( ~- bPLL(Phase Locking Loop)锁相环路
8 W% @& l- j8 [$ u内部PLL可以用来倍频HSI RC的输出时钟或HSE晶体输出时钟。, M- G! a3 N: T/ G
PLL的设置(选择HIS振荡器除2或HSE振荡器为PLL的输入时钟,和选择倍频因子)( p7 F8 q7 }5 D8 D8 K/ L% `
必须在其被激活前完成。一旦PLL被激活,这些参数就不能被改动。 ( ?$ D6 B3 @: _& [1 E( z
如果PLL中断在时钟中断寄存器里被允许,当PLL准备就绪时,可产生中断申请。3 |) p! G% q; d- t# U
如果需要在应用中使用USB接口,PLL必须被设置为输出48或72MHZ时钟,用于提供48MHz的USBCLK时钟。 2 u3 c+ W! G% j! j2 [* ~
; m/ B( o& a5 ^
LSE(Low Speed External)低速外部时钟信号
" |8 V+ t8 C( p7 J+ V* yLSE晶体是一个32.768kHz的低速外部晶体或陶瓷谐振器。
5 P# t( B7 e: P它为实时时钟或者其他定时功能提供一个低功耗且精确的时钟源。0 B- Z! u: E1 g
LSE晶体通过在备份域控制寄存器(RCC_BDCR)里的LSEON位启动和关闭。) g' @7 \5 M7 E! n/ {" A# r5 r
在备份域控制寄存器(RCC_BDCR)里的LSERDY指示LSE晶体振荡是否稳定。
7 h+ T2 ]; X2 U2 m) U! v在启动阶段,直到这个位被硬件置’1’后,LSE时钟信号才被释放出来。
) t/ W# x7 J& Y; Z如果在时钟中断寄存器里被允许,可产生中断申请。3 j: x  Q5 w6 s
5 s' C3 W% r- v! q+ X% Q
LSI(Low Speed Internal)低速内部时钟信号8 h9 r9 Y/ H, @2 y
LSI RC担当一个低功耗时钟源的角色,它可以在停机和待机模式下保持运行,为独立看门狗和自动唤醒单元提供时钟。5 [8 j3 T* W1 a& M8 E4 G
LSI时钟频率大约40kHz(在30kHz和60kHz之间)。6 p$ J0 _0 ^, ~% h
LSI RC可以通过控制/状态寄存器(RCC_CSR)里的LSION位来启动或关闭。, g8 P: U' }6 x& t7 ?$ v5 T
在控制/状态寄存器(RCC_CSR)里的LSIRDY位指示低速内部振荡器是否稳定。4 h1 y- Y2 P1 [( y8 d" r
在启动阶段,直到这个位被硬件设置为’1’后,此时钟才被释放。) T. h$ h/ o- m" r
如果在时钟中断寄存器(RCC_CIR)里被允许,将产生LSI中断申请。
$ C3 o; I* ^( k( O1 S7 V; s, \( C9 E
SYSCLK(System Clock)系统时钟选择 : I' k8 V; J& C7 d( O3 H$ Y
系统复位后,HSI振荡器被选为系统时钟。+ ^4 `+ n& ?9 v1 k! M
当时钟源被直接或通过PLL间接作为系统时钟时,它将不能被停止。+ Z' i1 f2 T2 p  n2 c$ u5 B
只有当目标时钟源准备就绪了(经过启动稳定阶段的延迟或PLL稳定),从一个时钟源到另一个时钟源的切换才会发生。
3 H8 q# [; `) p. G在被选择时钟源没有就绪时,系统时钟的切换不会发生。直至目标时钟源就绪,才发生切换。
8 q: e& q/ S8 G; Y) Z" v# c9 Y在时钟控制寄存器(RCC_CR)里的状态位指示哪个时钟已经准备好了,哪个时钟目前被用作系统时钟。* |1 v7 H# ]7 ]% Z8 T

* ]8 ~! R- t5 _  g2 `% q) qCSS(Clock Security System)时钟安全系统) O" h8 m# z+ g
时钟安全系统可以通过软件被激活。
8 G: y; G' O8 |9 C5 \+ x一旦其被激活,时钟监测器将在HSE振荡器启动延迟后被使能,并在HSE时钟关闭后关闭。
) |: T. P, T3 \6 g/ ~7 t$ ^! r* }8 t# L9 h( e6 N2 G
RTC(Real Time Clock)实时时钟( k8 R+ x/ ~( [% w* ?
通过设置备份域控制寄存器(RCC_BDCR)里的RTCSEL[1:0]位,RTCCLK时钟源可以由HSE/128、LSE或LSI时钟提供。8 m  W: N7 |" X+ w7 |: q7 s0 M0 x
除非备份域复位,此选择不能被改变。LSE时钟在备份域里,但HSE和LSI时钟不是。
8 m1 H; ^0 Y# \  n9 c5 \) f8 e$ z; g3 q- b
看门狗时钟 8 [; H. X8 ?" x
如果独立看门狗已经由硬件选项或软件启动,LSI振荡器将被强制在打开状态,并且不能被关闭。# C' M8 w& J' M6 A* C
在LSI振荡器稳定后,时钟供应给IWDG。' w6 v0 Z) m- y3 q; k
$ }. W9 `! G8 @' M; i* M% U
时钟输出
! K. i' D, d( c6 F微控制器允许输出时钟信号到外部MCO管脚。 6 V5 m2 V) S" ?. }
相应的GPIO端口寄存器必须被配置为相应功能。5 h+ Y0 `$ P& u8 l) |& X6 l
赞 收藏 评论0 发布时间:2016-6-26 12:11

举报

0个回答

所属标签

相似技术帖

官网相关资源

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