|
01. RTC概述 实时时钟 (RTC) 是一个独立的 BCD 定时器/计数器。RTC 提供一个日历时钟、两个可编程闹钟中断,以及一个具有中断功能的周期性可编程唤醒标志。RTC 还包含用于管理低功耗模式的自动唤醒单元。 , a8 |! P6 `% C) x
两个 32 位寄存器包含二进码十进数格式 (BCD) 的秒、分钟、小时(12 或 24 小时制)、星期几、日期、月份和年份。此外,还可提供二进制格式的亚秒值。 . _ j0 j, G |9 \7 M4 w
系统可以自动将月份的天数补偿为 28、29(闰年)、30 和 31 天。并且还可以进行夏令时补偿。 ) @! ^1 D) P: r+ |
其它 32 位寄存器还包含可编程的闹钟亚秒、秒、分钟、小时、星期几和日期。此外,还可以使用数字校准功能对晶振精度的偏差进行补偿。 ; I) ?4 E. j- C1 Z8 x
上电复位后,所有 RTC 寄存器都会受到保护,以防止可能的非正常写访问。
5 M2 d; y. e) x+ \8 ~
无论器件状态如何(运行模式、低功耗模式或处于复位状态),只要电源电压保持在工作范围内,RTC 便不会停止工作。
8 Z# C3 R4 \" Z- w: ]+ H 02. RTC主要特性
% T$ b; }" X7 t* K7 o: q9 V9 BRTC 单元的主要特性如下(参见 图 222 : RTC 框图 ):
w, U6 u' V' R* I● 包含亚秒、秒、分钟、小时(12/24 小时制)、星期几、日期、月份和年份的日历。
+ L7 {8 j" w9 L9 ^1 D● 软件可编程的夏令时补偿。
/ l9 C+ \+ Y# A" e. F5 h: `● 两个具有中断功能的可编程闹钟。可通过任意日历字段的组合驱动闹钟。1 S, l2 L0 V2 N! h2 x4 ^% ?9 q2 |6 j7 K
● 自动唤醒单元,可周期性地生成标志以触发自动唤醒中断。1 ~ u1 ^8 C( i) P3 v
● 参考时钟检测:可使用更加精确的第二时钟源(50 Hz 或 60 Hz)来提高日历的精确度。
' F1 i8 S, Q- Y/ b: ^● 利用亚秒级移位特性与外部时钟实现精确同步。
3 x% t3 M9 w' {' q% E3 d- B● 可屏蔽中断/事件:( a: ~' H/ p. U. c& p
— 闹钟 A
5 \6 s; R" b9 V8 G+ V— 闹钟 B
* {0 @7 x. C& R1 L— 唤醒中断( }4 x5 E4 {% y+ W0 w- Z/ O
— 时间戳! I* U0 {+ A9 d! ~6 R
— 入侵检测& j2 q" }3 T/ z7 Z% C
● 数字校准电路(周期性计数器调整)
6 e/ p; u# x1 E! t' }— 精度为 5 ppm/ M! ]* b) X5 {: k) t* s, A
— 精度为 0.95 ppm,在数秒钟的校准窗口中获得) \* E- a9 h( `! ^0 B
● 用于事件保存的时间戳功能(1 个事件)
6 `. i: \ h4 W! f4 `, j9 |- F● 入侵检测:
$ U0 ]/ P) g* H- k8 a8 Y& C5 u% Z— 2 个带可配置过滤器和内部上拉的入侵事件% Y W4 [( i" h3 L9 ?& ]3 o. r
● 20 个备份寄存器(80 字节)。发生入侵检测事件时,将复位备份寄存器。
● 复用功能输出 (RTC_OUT),可选择以下两个输出之一:# g; I+ S& \$ y5 q. x
— RTC_CALIB:512 Hz 或 1 Hz 时钟输出(LSE 频率为 32.768 kHz)。4 ?) O. {% X7 r* f, z: l5 U+ A
可通过将 RTC_CR 寄存器中的 COE[23] 位置 1 来使能此输出。该输出可连接到器件 RTC_AF1 功能。
5 w2 W* k5 A/ h6 y' r— RTC_ALARM(闹钟 A、闹钟 B 或唤醒)。
9 i5 I3 N2 R% ~% ~7 Y可通过配置 RTC_CR 寄存器的 OSEL[1:0] 位选择此输出。该输出可连接到器件RTC_AF1 功能。+ U* r3 o% F O+ B* Y, m9 a
● RTC 复用功能输入:
# @ Y0 e+ m: l8 j% c— RTC_TS:时间戳事件检测。该输入可连接到器件 RTC_AF1 和 RTC_AF2 功能。1 Y* R; I" k' d. O* I
— RTC_TAMP1:TAMPER1 事件检测。该输入可连接到器件 RTC_AF1 和 RTC_AF2功能。' q, s @: d1 x4 g, }1 O( u
— RTC_TAMP2:TAMPER2 事件检测。- d0 b" T. U t0 Y4 m
— RTC_REFIN:参考时钟输入(通常为市电,50 Hz 或 60 Hz)。
% I! m2 } B9 t5 [
) R0 @. E2 K6 A3 h( _ y/ t3 ?7 L4 X. D Q/ B$ E2 |: b
03. RTC部分功能3.1 时钟和预分频器% v G! f2 _' j/ H, D+ K" V
RTC 时钟源 (RTCCLK) 通过时钟控制器从 LSE 时钟、LSI 振荡器时钟以及 HSE 时钟三者中选择。有关 RTC 时钟源配置的更多信息,请参见 第 6 节:复位和时钟控制 (RCC)。 可编程的预分频器阶段可生成 1 Hz 的时钟,用于更新日历。为最大程度地降低功耗,预分频器分为 2 个可编程的预分频器(参见 图 222 : RTC 框图 ):4 d; X* O2 |* {4 u0 F$ c" n c
● 一个通过 RTC_PRER 寄存器的 PREDIV_A 位配置的 7 位异步预分频器。! Y0 c3 Y# z. M5 I6 X1 E
● 一个通过 RTC_PRER 寄存器的 PREDIV_S 位配置的 15 位同步预分频器。 注意: 使用两个预分频器时,推荐将异步预分频器配置为较高的值,以最大程度降低功耗。 要使用频率为 32.768 kHz 的 LSE 获得频率为 1 Hz 的内部时钟 (ck_spre),需要将异步预分频系数设置为 128,并将同步预分频系数设置为 256。分频系数的最小值为 1,最大值为 2 ^22 。这对应于约为 4 MHz 的最大输入频率。f ck_apre 可根据以下公式得出:
/ k( r1 M1 r& \$ r- b9 b% O* F! e' H7 B) y' Z
; C5 @5 T6 ?$ v0 ]& C
; z8 U6 a- d. a. t2 F
3.2 实时时钟和日历2 p: p5 C2 V/ \' u6 _& p
RTC 日历时间和日期寄存器可通过与 PCLK1(APB1 时钟)同步的影子寄存器来访问。这些时间和日期寄存器也可以直接访问,这样可避免等待同步的持续时间。 ● RTC_SSR 对应于亚秒
( i& _8 } B4 s, Y; S' o● RTC_TR 对应于时间8 l ~3 u( s4 X5 o8 ]( ]
● RTC_DR 对应于日期 每隔两个 RTCCLK 周期,便将当前日历值复制到影子寄存器,并将 RTC_ISR 寄存器的 RSF位置 1(请参见 第 23.6.4 节 )。在停机和待机模式下不会执行复制操作。退出这两种模式时,影子寄存器会在最长 2 个 RTCCLK 周期后进行更新。 当应用读取日历寄存器时,它会访问影子寄存器的内容。也可以通过将 RTC_CR 寄存器的BYPSHAD 控制位置 1 来直接访问日历寄存器。默认情况下,该位被清零,用户访问影子寄存器。 在 BYPSHAD=0 模式下读取 RTC_SSR、RTC_TR 或 RTC_DR 寄存器时,APB 时钟频率(f APB ) 必须至少为 RTC 时钟频率 (f RTCCLK ) 的 7 倍。影子寄存器通过系统复位来复位。
( C; d. T) X, m/ W! ^ 04. RTC低功耗模式和中断
( ]9 I1 {; _/ J5 w低功耗模式" ~) h2 J' |+ I/ Q/ z
1 q6 M4 B& r3 I+ x7 H3 R, e3 G$ v, a' v" C/ s, l
RTC中断 所有 RTC 中断均与 EXTI 控制器相连。 要使能 RTC 闹钟中断,需按照以下顺序操作: 将 EXTI 线 17 配置为中断模式并将其使能,然后选择上升沿有效。 配置 NVIC 中的 RTC_Alarm IRQ 通道并将其使能。 配置 RTC 以生成 RTC 闹钟(闹钟 A 或闹钟 B)。 ( O8 l* O O: _. }: Y
( J( D, i& a" f/ p
+ ~8 S9 A' u* M( `+ n/ s& ] m
要使能 RTC 唤醒中断,需按照以下顺序操作: 要使能 RTC 入侵中断,需按照以下顺序操作: 要使能 RTC 时间戳中断,需按照以下顺序操作: 将 EXTI 线 21 配置为中断模式并将其使能,然后选择上升沿有效。 配置 NVIC 中的 TAMP_STAMP IRQ 通道并将其使能。 配置 RTC 以检测 RTC 时间戳事件。
8 V4 f( T8 N1 @! t ! b# c- Z* I& h5 l6 `
2 ^/ S+ W% ~+ [; w r
) f: D' Y: d2 W5 K e. U
05. RTC寄存器5.1RTC 时间寄存器 (RTC_TR)
8 n6 H! T- }3 m# x* SRTC time register6 o! f8 u: j+ z
RTC_TR 是日历时间影子寄存器。只能在初始化模式下对该寄存器执行写操作。2 e$ G. u6 t; B+ \% x5 e( \
偏移地址:0x000 f g+ B" n/ b. b3 W
上电复位值:0x0000 0000
& `2 d) l: o% u5 Y5 I系统复位:当 BYPSHAD = 0 时为 0x0000 0000;当 BYPSHAD = 1 时不受影响。
! r( Q% O4 S( ]
8 s8 I W; a% r' d9 D9 J. w+ x6 w& K6 R4 B: `8 R5 x7 ^% q( K+ k
5.2 RTC 日期寄存器 (RTC_DR)+ k& X1 A6 d6 o7 U f: v( s0 V
RTC date register
~- T6 f! D( f. Q# W2 {2 m: ^RTC_DR 是日历日期影子寄存器。只能在初始化模式下对该寄存器执行写操作。% C* M0 F! a* S
偏移地址:0x041 V! R. F$ x% T9 [
上电复位值:0x0000 2101
$ {. A3 E, o0 ~1 E, i+ S1 v! r! U+ @( b" j/ l1 s, V" G* o6 n* G
) P- @: P9 P, n! @, @ 5 Y, Q. `3 r& B; r5 e3 s9 t
5.3 RTC 控制寄存器 (RTC_CR)
% ]4 E6 |' s3 f0 BRTC control register7 y$ `! Q' |3 j0 A* i, Z0 I! Y
偏移地址:0x08
6 d' R+ x: m6 M0 X+ B' V上电复位值:0x0000 0000! D( d7 G# V& t2 G8 b' U
系统复位:不受影响
# n7 Z: P5 Z. I; g4 I' N; ^+ ^& f
* Z' a# t9 O1 X& Z! G位 22:21 OSEL[1:0]:输出选择 (Output selection)- ?4 a+ Q# A( D& @/ m$ E
这些位用于选择要连接到 RTC_ALARM 输出的标志
" S$ z+ s5 N' H/ k4 {8 z. `- \00:禁止输出; v0 u. r; L: P' i' d
01:使能闹钟 A 输出, B3 d% F0 j; n+ G/ h, B- |3 B
10:使能闹钟 B 输出' l0 N, o9 t1 w& n/ F
11:使能唤醒输出- W- [/ d' A+ ?9 W J, J
位 20 POL:输出极性 (Output polarity)
$ W. q) d& _; v0 v' `& u该位用于配置 RTC_ALARM 输出的极性7 M6 w& E1 Z) `* h
0:当 ALRAF/ALRBF/WUTF 置 1 时(取决于 OSEL[1:0]),该引脚为高电平
Z* ^( `0 L6 q* {, n( W5 ~1:当 ALRAF/ALRBF/WUTF 置 1 时(取决于 OSEL[1:0]),该引脚为低电平
1 i# x1 v. v1 k. v位 19 COSEL:校准输出选择 (Calibration output selection)
+ h! J; P5 s' r当 COE=1 时,该位可选择 RTC_CALIB 上输出的信号。
& M* E! H0 M. ^( J* f1 v0:校准输出为 512 Hz
1 R4 M# R: z" I1:校准输出为 1 Hz8 }4 O; l& u) y6 e1 J- ?, k3 a' a6 y9 z
在 RTCCLK 为 32.768 kHz 且预分频器为其默认值(PREDIV_A=127 且 PREDIV_S=255)/ e5 t. I0 {# Z# F. [* y. I; E. B
的条件下,这些频率有效。请参见 第 23.3.14 节:校准时钟输出 。' B% o4 }% h5 N/ z5 ?# z# f; F
位 18 BKP:备份 (Backup)
9 g# s! A, f9 _# Z( [+ O用户可对此位执行写操作以记录是否已对夏令时进行更改。& W' W1 @1 R- @. `) T+ F
位 17 SUB1H:减少 1 小时(冬季时间更改)(Subtract 1 hour (winter time change))1 \) H: d9 g+ T, p1 h
当该位在初始化模式以外的模式下置 1 时,如果当前小时不是 0,则日历时间将减少 1 小. O' }. ?1 ?" _
时。此位始终读为 0。" U3 ]8 k; f& K, i
当前小时为 0 时,将此位置 1 没有任何作用。
. C4 \& Y7 t' X$ T0:无作用。' X. X% B% V9 q; N
1:将当前时间减少 1 小时。这可用于冬季时间更改。
# O- }4 k* q& B F' F& N位 16 ADD1H:增加 1 小时(夏季时间更改)(Add 1 hour (summer time change))- C( i6 S2 D- s2 E' C& k( |" V
当该位在初始化模式以外的模式下置 1 时,日历时间将增加 1 小时。此位始终读为 0。" `$ v0 E! |7 l4 r9 d2 t* a+ S
0:无作用。
5 b+ v8 \8 ]3 y" P1:将当前时间增加 1 小时。这可用于夏季时间更改2 i$ }/ E5 v) D7 X8 y( o
位 15 TSIE:时间戳中断使能 (Timestamp interrupt enable)8 d+ i* X5 [+ P
0:禁止时间戳中断( B, @& h0 H7 V7 j( ]+ |
1:使能时间戳中断% m7 f7 e$ f' w
位 14 WUTIE:使能唤醒定时器使能 (Wakeup timer interrupt enable)
# N8 L3 t! W+ U) {- I: D6 u0:禁止唤醒定时器中断
6 S r0 U& r6 v. a$ U# B( j1:使能唤醒定时器中断
* U% U0 G/ e1 ]7 B位 13 ALRBIE: 闹钟 B 中断使能 (Alarm B interrupt enable): H! u( @4 D+ n4 g* c
0:闹钟 B 中断禁止
) |* E$ ~' _0 a7 _; `! W# l2 O/ Y1:闹钟 B 中断使能7 V \( _, p: z! u8 h7 i: I8 f
位 12 ALRAIE:闹钟 A 中断使能 (Alarm A interrupt enable)- ~7 [3 u; m- Y; _
0:禁止闹钟 A 中断
, W) a, h6 e, f2 K ~1:使能闹钟 A 中断. j6 m F, Q& K
位 11 TSE:时间戳使能 (Time stamp enable)3 [/ g7 @5 X5 s9 w
0:禁止时间戳, R! k: ?3 s4 L4 ~" Q+ G; j
1:使能时间戳& ]* T+ X: }" \) C1 m
位 10 WUTE:唤醒定时器使能 (Wakeup timer enable)
* z( U8 Q ^# S5 B0:禁止唤醒定时器
& g: ^" K* R: s1 I. v: U0 s4 q1:使能唤醒定时器 位 9 ALRBE: 闹钟 B 使能 (Alarm B enable)
5 a& l) j% w$ r0:禁止闹钟 B5 B, a4 K0 ~% t; S- |3 w+ E9 S
1:使能闹钟 B! z6 q3 l! X, f
位 8 ALRAE :闹钟 A 使能 (Alarm A enable)4 f. j: c4 g2 K5 t/ G! L
0:禁止闹钟 A% F4 g% K" d. G4 j8 w; g0 N( A! Q
1:使能闹钟 A
% b! U6 d7 O, ?# s+ E位 7 DCE :粗略数字校准使能 (Coarse digital calibration enable)
7 e% F B3 c6 A! L1 Y0:禁止数字校准& Y* r( w& | S
1:使能数字校准9 n5 X5 s: }( U' h) @) {( k
PREDIV_A 必须大于或等于 60 I; z' s! {; e. \) S \
位 6 FMT:小时格式 (Hour format)
$ _1 {2 [+ S# T& l% q% b0:24 小时/天格式
0 v; W) Q- p4 R4 `, Z1:AM/PM 小时格式
; _7 I0 K* a! F7 z- ?4 X# [位 5 BYPSHAD:旁路影子寄存器 (Bypass the shadow registers)9 D) Y$ K$ L6 I) }; B5 V: M' _
0:日历值(从 RTC_SSR、RTC_TR 和 RTC_DR 读取时)取自影子寄存器,该影子寄存器
1 z8 J- h* c0 X# ^ r. n每两个 RTCCLK 周期更新一次。
" H# t k; w$ a* b: L4 ?1:日历值(从 RTC_SSR、RTC_TR 和 RTC_DR 读取时)直接取自日历计数器。
; `$ a/ t" o K( a4 N8 \$ ^注意:如果 APB1 时钟的频率低于 7 倍的 RTCCLK 频率,则必须将 BYPSHAD 置“ 1 ”。
- U% W: s0 R J6 ? H9 s位 4 REFCKON:参考时钟检测使能(50 Hz 或 60 Hz)(Reference clock detection enable (50 or3 F; s% L! V6 }6 ~3 z! X9 A4 C
60 Hz))
7 e' R& M" \! Q4 J0:禁止参考时钟检测: I4 n4 J0 \/ x5 L- j
1:使能参考时钟检测8 n2 |+ T' M8 @
注意: PREDIV_S 必须为 0x00FF 。
1 w4 P. e m% y* h4 G1 I位 3 TSEDGE:时间戳事件有效边沿 (Timestamp event active edge). a2 c- _. d$ ?9 ]/ \0 O0 j
0:TIMESTAMP 上升沿生成时间戳事件" C# C p- v5 N5 b* t: T9 u; z
1:TIMESTAMP 下降沿生成时间戳事件
3 g/ @$ m* G4 t9 ^% A6 z4 D! MTSEDGE 发生更改时,必须复位 TSE 以避免将 TSF 意外置 1# L' @3 ?. R9 p, u, d
位 2:0 WUCKSEL[2:0]:唤醒时钟选择 (Wakeup clock selection)9 @/ J/ F5 e% Q; K! n
000:选择 RTC/16 时钟$ Z, j4 t7 `, H
001:选择 RTC/8 时钟
2 G2 C& i% a# ?4 x1 o010:选择 RTC/4 时钟
2 K2 z5 l- c1 ^2 H% Q/ k011:选择 RTC/2 时钟! G# E9 i+ |- k1 N/ x: i
10x:选择 ck_spre 时钟(通常为 1 Hz)0 \6 c% T. y+ E3 N
11x:选择 ck_spre 时钟(通常为 1 Hz)并将 WUT 计数器值增加 2 16 (见下面的注释) 温馨提示 WUT = 唤醒单元计数器值。当 WUCKSEL[2:1 = 11] 时, WUT = (0x0000 to 0xFFFF) +0x10000 (增加的值)。9 R3 p! d# Y K4 K
只能在初始化模式下 (RTC_ISR/INITF = 1) 对该寄存器的位 7 、 6 和 4 执行写操作。
8 r- k+ H: w9 z! T& ]9 A2 x9 p2 N只能在 RTC_CR WUTE 位 = 0 且 RTC_ISR WUTWF 位 = 1 时对该寄存器的位 2 到 0 执行写操作。
% x3 ]; F2 f+ ?: p5 b6 F+ E8 |建议不要在日历小时递增时更改小时,因为这样做会屏蔽日历小时的增量。ADD1H 和 SUB1H 的更改在下一秒生效。3 h: n7 u5 k( b- K1 h2 f
此寄存器受写保护。第 576 页的 RTC 寄存器写保护中介绍了写访问的过程。
6 E- s; i: C' Z" z) A9 U
5.4 RTC 初始化和状态寄存器 (RTC_ISR)
: d3 G Y" G& ^! r8 sRTC initialization and status register# H" Z6 y0 N1 c+ I8 L* W+ K
偏移地址:0x0C
1 ~% U# H/ p( n上电复位值:0x0000 0007
7 q; `/ |5 b& D0 Y系统复位值:不受影响(INIT、INITF 和 RSF 除外,它们在复位时被清零)。& S( s4 n; ~% C; S3 w7 p
2 P! @# ^2 P, a: C
4 p0 a$ t+ e7 o 位 31:17 保留 位 16 RECALPF:重新校准挂起标志 (Recalibration pending Flag)# A1 v. Z- c- |* S- B4 _. W
当软件对 RTC_CALR 寄存器执行写操作时,RECALPF 状态标志将自动置“1”,指示' v6 l+ {, F" D: U) T. G6 |3 C+ r
RTC_CALR 寄存器已屏蔽。当采用新的校准设置时,该位恢复为“0”。请参见 动态重校准一节。 位 15 保留,必须保持复位值。 位 14 TAMP2F:TAMPER2 检测标志 (TAMPER2 detection flag)
# \! u% w# C3 K2 [; w在入侵输入 2 上检测到入侵检测事件时,由硬件将此标志置 1。该标志由软件写零清除。 位 13 TAMP1F:入侵检测标志 (Tamper detection flag), i; `; F: E9 U8 i! l3 {
当检测到入侵检测事件时,由硬件将此标志置 1。
. e. H I0 n8 m该标志由软件写零清除。 位 12 TSOVF:时间戳溢出标志 (Timestamp overflow flag) ^ q X! Q5 W+ m6 q; A. S
当在 TSF 已置 1 的情况下发生时间戳事件时,由硬件将此标志置 1。- ?* L3 V8 d) g5 M: ]# y& m
该标志由软件写零清除。建议仅在 TSF 位清零之后再检查并清零 TSOVF 位。否则,如果时3 B9 X; V4 q) R/ Y, Y0 H/ F
间戳事件恰好在清零 TSF 位之前刚刚发生,则溢出事件可能会被漏掉。 位 11 TSF:时间戳标志 (Timestamp flag): j4 n) D" i2 l8 w2 e7 S0 ^
发生时间戳事件时,由硬件将此标志置 1。
0 V0 ~6 U; Z; s! K+ m ?) @. r该标志由软件写零清除。 位 10 WUTF:唤醒定时器标志 (Wakeup timer flag), f+ {1 ^4 s- m4 P& o
当唤醒自动重载计数器计数到 0 时,由硬件将此标志置 1。
8 T4 Z4 C1 O) p+ A2 W* \该标志由软件写零清除。1 P0 _" `9 U: k4 p9 D/ R3 B3 W
软件必须在 WUTF 再次置 1 的 1.5 个 RTCCLK 周期之前将该标志清零。 位 9 ALRBF:闹钟 B 标志 (Alarm B flag)
( }* K' n. G* O3 B当时间/日期寄存器(RTC_TR 和 RTC_DR)与闹钟 B 寄存器 (RTC_ALRMBR) 匹配时,由
2 y1 n% N9 @# H3 r' l* }& r: f2 G; C硬件将该标志置 1。
% I8 p. e! D! y该标志由软件写零清除。 位 8 ALRAF:闹钟 A 标志 (Alarm A flag)" l1 y( C& |+ p- W1 H) I, v2 j
当时间/日期寄存器(RTC_TR 和 RTC_DR)与闹钟 A 寄存器 (RTC_ALRMAR) 匹配时,由
. T- D/ b: j7 B' C7 H) X硬件将该标志置 1。
" s# [2 S: ~0 g& r" {8 t6 B! v该标志由软件写零清除。 位 7 INIT:初始化模式 (Initialization mode)2 c! _6 W- d* ~7 l4 h! m
0:自由运行模式。2 H8 o$ D; E7 C7 a2 l. B5 N
1:初始化模式,用于编程时间和日期寄存器(RTC_TR 和 RTC_DR)以及预分频器寄存器
* d7 z+ J7 R: b& B8 ^7 T/ n* Q(RTC_PRER)。计数器停止计数,当 INIT 被复位后,计数器从新值开始计数。 位 6 INITF:初始化标志 (Initialization flag)
' x* J5 B- [2 c. W! Z9 F* w当此位置 1 时,RTC 处于初始化状态,此时可更新事件、日期和预分频器寄存器。; d0 H. p G+ a) X
0:不允许更新日历寄存器。' `2 B1 l2 ], E+ @# o
1:允许更新日历寄存器。 位 5 RSF:寄存器同步标志 (Registers synchronization flag)' w1 i: B& @5 ^( z; G
每次将日历寄存器的值复制到影子寄存器(RTC_SSRx、RTC_TRx 和 RTC_DRx)时,都8 F4 g/ ?7 |- o% k( R0 w- B
会由硬件将此位置 1。在初始化模式下、平移操作挂起时 (SHPF=1) 或在旁路影子寄存器模( R" G5 J& n4 V/ O: n! c5 B' L
式 (BYPSHAD=1) 下,该位由硬件清零。该位还可由软件清零。
. N2 Y, T9 h p) x5 f; F7 F; K8 M0:日历影子寄存器尚未同步0 N+ O$ g7 u9 `% H4 h$ H
1:日历影子寄存器已同步 位 4 INITS:初始化状态标志 (Initialization status flag)
+ `) K# r- d" J: N7 J. X1 G$ _! M当日历年份字段不为 0 时(上电复位状态),由硬件将该位置 1。
! d. s" t4 c, S: l4 I6 T. |0:日历尚未初始化. H/ o' ]5 F9 t+ R- a
1:日历已经初始化 位 3 SHPF:平移操作挂起 (Shift operation pending)
# L5 K& y9 \1 z& h% O5 y' s' p" ]0:没有平移操作挂起
" z5 d% O2 R$ D1:某个平移操作挂起. l, y5 P, D" ~2 e. D
只要通过对 RTC_SHIFTR 寄存器执行写操作来启动平移操作,此标志便由硬件置 1。执行完
- p# g6 F7 g, H7 P相应的平移操作后,此标志由硬件清零。对 SHPF 执行写入操作不起作用。 位 2 WUTWF:唤醒定时器写标志 (Wakeup timer write flag); w0 N6 O X: D- V0 _
在 RTC_CR 寄存器中的 WUTE 位置 0 后,当唤醒定时器值可更改时,由硬件将该位置 1。
4 V# r% P- t- c7 }8 c( }0:不允许更新唤醒定时器配置
: E1 q0 V8 X8 [7 F1:允许更新唤醒定时器配置 位 1 ALRBWF:闹钟 B 写标志 (Alarm B write flag)
/ p1 ]0 ?9 ^! i4 U0 V6 o2 n/ x) n) C在 RTC_CR 寄存器中的 ALRBIE 位置 0 之后,当闹钟 B 的值可更改时,由硬件将该位置 1。
1 v4 A+ T3 N" e. e y5 W) s k该位在初始化模式下由硬件清零。; v7 c9 G! d) z; ]4 |
0:不允许更新闹钟 B% l) O% X( Y) Z H# O
1:允许更新闹钟 B 位 0 ALRAWF:闹钟 A 写标志 (Alarm A write flag)
8 j, H* ^& N1 U Z* A在 RTC_CR 寄存器中的 ALRAE 位置 0 后,当闹钟 A 的值可更改时,由硬件将该位置 1。
) o/ N+ g4 [/ k8 N" z7 C该位在初始化模式下由硬件清零。
; A$ R! }8 j5 ^" \, h0:不允许更新闹钟 A
# Q: B8 Y7 _5 K. ?( X; Q$ x1:允许更新闹钟 A
" q/ M% B, K( p1 C L w) }1 g5 g5 V 5.5 RTC 预分频器寄存器 (RTC_PRER)
! h, j2 U- M* v. ?+ [0 qRTC prescaler register% d! M( `3 [7 {& e
偏移地址:0x10
: z% }# l7 k+ \' \! f0 b上电复位值:0x007F 00FF
6 b. b) e* H9 f4 N7 q系统复位:不受影响 n+ l5 D/ | Y1 h9 h* W
4 N" \1 d9 d2 \$ Z+ ?% Y* j# A
% w6 b9 }* t7 n6 q+ @ 5.6 RTC 唤醒定时器寄存器 (RTC_WUTR); R9 F, d, v2 V- C0 P
RTC wakeup timer register
) e3 x+ l4 C$ W- b偏移地址:0x14
8 I- N- x- o$ w) c8 f; ~1 ?% Y3 |9 q8 t上电复位值:0x0000 FFFF
2 q% M. d& ?9 i8 E+ y+ m7 l1 t系统复位:不受影响/ x; ^0 p& A( W. D
3 [9 ^, Z! r: w7 N6 X
; L* q* h( {0 x, H 位 31:16 保留 位 15:0 WUT[15:0]:唤醒自动重载值位 (Wakeup auto-reload value bit)* _+ G: t: r5 v5 n( _! s
当使能唤醒定时器时(WUTE 置 1),每 (WUT[15:0] + 1) 个 ck_wut 周期将 WUTF 标志置 1一次。ck_wut 周期通过 RTC_CR 寄存器的 WUCKSEL[2:0] 位进行选择。2 ]2 m& m' Z! W3 H: X
当 WUCKSEL[2] = 1 时,唤醒定时器变为 17 位,WUCKSEL[1] 等效为 WUT[16],即要重载到定时器的最高有效位。 注意: WUTF 第一次置 1 发生在 WUTE 置 1 之后 (WUT+1) 个 ck_wut 周期。禁止在
; f- M2 T& _& E- T9 g p) Z$ YWUCKSEL[2:0]=011(RTCCLK/2) 时将 WUT[15:0] 设置为 0x0000 。 . I# b! W2 X! b6 v; t
5.7 RTC 校准寄存器 (RTC_CALIBR)& P4 k# G* `3 |8 W8 O0 y/ \+ l
RTC calibration register
- P% z' r' J4 v1 c: U, \, c偏移地址:0x180 \' t7 i5 w! J0 P
上电复位值:0x0000 0000 系统复位:不受影响 * P+ ?" d1 O3 l
$ I* a: b* ^- B) a( f
! p' ]+ Z4 ]( x) M4 b6 L: X' j% c& d 5.8 RTC 闹钟 A 寄存器 (RTC_ALRMAR)) N7 {: c! z! p, D
RTC alarm A register
6 I( F% G w6 T1 Z9 `偏移地址:0x1C [0 i! T. B: b+ m+ a9 V+ l
上电复位值:0x0000 0000
, O) b' Z6 h$ _系统复位:不受影响
- B8 Y" o F: i1 _9 H" r1 O
- G6 Q7 E3 I0 U8 a7 v; y' r3 D- }
' J1 c" v: k# c
位 31 MSK4:闹钟 A 日期掩码 (Alarm A date mask)
9 o0 a- x" W2 D& ?& q0:如果日期/日匹配,则闹钟 A 置 12 |3 U8 r9 |& Y) @& l
1:在闹钟 A 比较中,日期/日无关 位 30 WDSEL:星期几选择 (Week day selection)" A+ N: t" k! e9 S7 X3 d
0:DU[3:0] 代表日期的个位; Y( _. X1 u3 U3 O9 k
1:DU[3:0] 代表星期几。DT[1:0] 为无关位。 位 29:28 DT[1:0]:日期的十位(BCD 格式)(Date tens in BCD format)。 位 27:24 DU[3:0]:日期的个位或日(BCD 格式)(Date units or day in BCD format)。 位 23 MSK3:闹钟 A 小时掩码 (Alarm A hours mask)( }4 M+ [3 u. i" P1 m
0:如果小时匹配,则闹钟 A 置 18 `- w& }, `+ J7 e* E$ x5 J3 a
1:在闹钟 A 比较中,小时无关 位 22 PM :AM/PM 符号 (AM/PM notation)5 G3 S1 y- U E1 G- Z
0:AM 或 24 小时制# _/ E, f8 B5 P2 ?
1:PM 位 21:20 HT[1:0]:小时的十位(BCD 格式)(Hour tens in BCD format)。 位 19:16 HU[3:0]:小时的个位(BCD 格式)(Hour units in BCD format)。 位 15 MSK2:闹钟 A 分钟掩码 (Alarm A minutes mask)
5 L* Q1 C0 Y, K8 R4 S" A0:如果分钟匹配,则闹钟 A 置 14 ] q0 o" i% f! @ C d
1:在闹钟 A 比较中,分钟无关 位 14:12 MNT[2:0]:分钟的十位(BCD 格式)(Minute tens in BCD format)。 位 11:8 MNU[3:0]:分钟的个位(BCD 格式)(Minute units in BCD format)。 位 7 MSK1:闹钟 A 秒掩码 (Alarm A seconds mask)
$ T; `: V, [0 I' \$ z# S0:如果秒匹配,则闹钟 A 置 1 1:在闹钟 A 比较中,秒无关 位 6:4 ST[2:0]:秒的十位(BCD 格式)(Second tens in BCD format)。
. `! n! h1 w. g位 3:0 SU[3:0]:秒的个位(BCD 格式)(Second units in BCD format)。 & B7 j9 z( G$ J0 A
5.9 RTC 写保护寄存器 (RTC_WPR)2 q( y: Q' D# Y( B3 j/ a9 [
RTC write protection register8 C6 s+ ?+ o: F
偏移地址:0x24
$ b* I& m, b4 i2 @' i: K [2 V7 s复位值:0x0000 0000
% u1 g/ v- u- E- D. R& l
8 y4 y5 z+ S* b+ k/ b2 m4 A
: \7 K2 W5 b! W3 y* K" N/ n5 t 5.10 RTC 亚秒寄存器 (RTC_SSR)3 F& f7 K, {; g! h4 X
RTC sub second register
" x. s0 H) S) V8 g7 T8 ?. K& j偏移地址:0x28. i. j! G) @' K' o, x
上电复位值:0x0000 0000) [( _1 s! s U2 |: y
系统复位:当 BYPSHAD = 0 时为 0x0000 0000;当 BYPSHAD = 1 时不受影响。6 V) M0 d2 x: _8 u, `
9 k: f7 a. u' _0 }+ G, S
, ` A( F1 m% g' B7 c7 ?- e 5.11 RTC 时间戳时间寄存器 (RTC_TSTR)* |$ b" o# H# R* e/ p
RTC time stamp time register0 {0 B0 d+ p6 a0 ]5 K- T- S# z
偏移地址:0x30
* h) ]' d: D7 I' i6 i$ z上电复位值:0x0000 0000: \8 O0 P/ e9 g% M8 Z
系统复位:不受影响
- |/ v6 U2 K8 U7 C# w/ i5 Z2 J% z5 V- t$ b2 b$ f
5.12 RTC 备份寄存器 (RTC_BKPxR); _ J2 D7 f3 n- Y0 k
RTC backup registers
5 H& u |- D+ s! H6 f1 K' D8 ?* s( J偏移地址:0x50 到 0x9C+ P2 @# T+ J" f# O( `) t
上电复位值:0x0000 0000- k4 t/ Y* ^/ x9 G) Z7 u$ x5 N
系统复位:不受影响
4 N, m: l& w6 Q/ N. @; J. r) B
" F8 G& l, y* C1 A0 v
2 y9 O3 m8 s: M) p) [
4 ]4 x* n- y# x9 h5 R( R) t8 _ |