01. RTC概述 实时时钟 (RTC) 是一个独立的 BCD 定时器/计数器。RTC 提供一个日历时钟、两个可编程闹钟中断,以及一个具有中断功能的周期性可编程唤醒标志。RTC 还包含用于管理低功耗模式的自动唤醒单元。
$ k/ d" H) N4 Z% V/ s
两个 32 位寄存器包含二进码十进数格式 (BCD) 的秒、分钟、小时(12 或 24 小时制)、星期几、日期、月份和年份。此外,还可提供二进制格式的亚秒值。 + u* ?/ p$ p! S7 u; D% T( ]% j1 p
系统可以自动将月份的天数补偿为 28、29(闰年)、30 和 31 天。并且还可以进行夏令时补偿。 - G! Z$ P, C1 r/ i6 K1 y* d! {
其它 32 位寄存器还包含可编程的闹钟亚秒、秒、分钟、小时、星期几和日期。此外,还可以使用数字校准功能对晶振精度的偏差进行补偿。 7 l, S7 W' k0 G0 T2 A
上电复位后,所有 RTC 寄存器都会受到保护,以防止可能的非正常写访问。 8 }+ i# J* d% w# a# q5 Y
无论器件状态如何(运行模式、低功耗模式或处于复位状态),只要电源电压保持在工作范围内,RTC 便不会停止工作。 . f ]0 h8 T2 W- t
02. RTC主要特性: A1 {5 R! P% ^/ S# D% k9 A Y' f, w7 C8 |
RTC 单元的主要特性如下(参见 图 222 : RTC 框图 ):
& w$ {( ~$ Y7 l0 o● 包含亚秒、秒、分钟、小时(12/24 小时制)、星期几、日期、月份和年份的日历。2 l Z8 B$ @9 R. H5 X0 X
● 软件可编程的夏令时补偿。- V6 t0 d. m4 o5 \' O/ ]
● 两个具有中断功能的可编程闹钟。可通过任意日历字段的组合驱动闹钟。
: N- Z0 g2 ?5 ~" ^2 R* J& J$ Y● 自动唤醒单元,可周期性地生成标志以触发自动唤醒中断。
! u# U7 K* y; D; |● 参考时钟检测:可使用更加精确的第二时钟源(50 Hz 或 60 Hz)来提高日历的精确度。
; c# {# G: k. }0 V: _/ i+ ?" q5 T● 利用亚秒级移位特性与外部时钟实现精确同步。
`/ w, m4 h1 P: n! A2 z+ A● 可屏蔽中断/事件:) ^4 Q' K& @/ q( f( L+ x) E
— 闹钟 A
+ w$ \6 m$ s7 a! ]7 D# z— 闹钟 B% n9 o* q/ T5 ~/ G6 ^6 a
— 唤醒中断9 m6 o; S5 d/ W* [
— 时间戳
" G% ^/ H [2 q6 ?2 B; q— 入侵检测
. [! I) s! | k% Q! z6 j! J% G8 E4 ]● 数字校准电路(周期性计数器调整)' @! W4 L0 v+ n: y$ X) Y: s+ J1 B) e
— 精度为 5 ppm
R$ I9 ~2 e8 J— 精度为 0.95 ppm,在数秒钟的校准窗口中获得8 W" j) G1 ~3 e' j0 z! z( r' b9 ^
● 用于事件保存的时间戳功能(1 个事件)
) r E. y, L3 u" P, a, F% \. @● 入侵检测:4 S2 k, N1 t* a( j6 y5 J* s& P
— 2 个带可配置过滤器和内部上拉的入侵事件
, W: T+ m& p. B$ x. A) f3 u● 20 个备份寄存器(80 字节)。发生入侵检测事件时,将复位备份寄存器。
● 复用功能输出 (RTC_OUT),可选择以下两个输出之一:
w& {. x4 |4 j+ }$ }2 U— RTC_CALIB:512 Hz 或 1 Hz 时钟输出(LSE 频率为 32.768 kHz)。0 f! X* U! x1 }, e
可通过将 RTC_CR 寄存器中的 COE[23] 位置 1 来使能此输出。该输出可连接到器件 RTC_AF1 功能。5 u& D4 f4 o6 x
— RTC_ALARM(闹钟 A、闹钟 B 或唤醒)。7 o% }; r, `6 ~* Q5 e% ?# e ~+ p
可通过配置 RTC_CR 寄存器的 OSEL[1:0] 位选择此输出。该输出可连接到器件RTC_AF1 功能。7 Y& {" O, R8 K6 `; ~5 P
● RTC 复用功能输入:
. A! @* x1 K# _ v/ Y3 Q$ [0 X! P— RTC_TS:时间戳事件检测。该输入可连接到器件 RTC_AF1 和 RTC_AF2 功能。1 B3 i# d8 ~% M, }8 _! |3 G* C
— RTC_TAMP1:TAMPER1 事件检测。该输入可连接到器件 RTC_AF1 和 RTC_AF2功能。
8 e# Z' o- k9 m1 }7 @+ U— RTC_TAMP2:TAMPER2 事件检测。
- \. D2 P$ B+ E— RTC_REFIN:参考时钟输入(通常为市电,50 Hz 或 60 Hz)。
1 R1 q, V3 m4 f& ~
. r; `: N" |) h6 {/ `+ p; O
* L$ x6 R* `' m, v9 l8 v. B 03. RTC部分功能3.1 时钟和预分频器& F' B m! Y9 {# Y
RTC 时钟源 (RTCCLK) 通过时钟控制器从 LSE 时钟、LSI 振荡器时钟以及 HSE 时钟三者中选择。有关 RTC 时钟源配置的更多信息,请参见 第 6 节:复位和时钟控制 (RCC)。 可编程的预分频器阶段可生成 1 Hz 的时钟,用于更新日历。为最大程度地降低功耗,预分频器分为 2 个可编程的预分频器(参见 图 222 : RTC 框图 ):+ V0 i5 b3 }! n$ y/ \3 o" x& \
● 一个通过 RTC_PRER 寄存器的 PREDIV_A 位配置的 7 位异步预分频器。' K- {+ o. L$ t+ O
● 一个通过 RTC_PRER 寄存器的 PREDIV_S 位配置的 15 位同步预分频器。 注意: 使用两个预分频器时,推荐将异步预分频器配置为较高的值,以最大程度降低功耗。 要使用频率为 32.768 kHz 的 LSE 获得频率为 1 Hz 的内部时钟 (ck_spre),需要将异步预分频系数设置为 128,并将同步预分频系数设置为 256。分频系数的最小值为 1,最大值为 2 ^22 。这对应于约为 4 MHz 的最大输入频率。f ck_apre 可根据以下公式得出:
3 }0 s v, g! G" I+ F0 A u
% J- d' Y8 z4 H+ h% _1 X6 v( @9 F5 a$ i1 F; ^
6 M+ u+ f5 L w! s
3.2 实时时钟和日历+ c) B2 }8 z5 H' _
RTC 日历时间和日期寄存器可通过与 PCLK1(APB1 时钟)同步的影子寄存器来访问。这些时间和日期寄存器也可以直接访问,这样可避免等待同步的持续时间。 ● RTC_SSR 对应于亚秒; [. Z- H' V9 r
● RTC_TR 对应于时间! |$ h# x' p. r8 X. }; ~# i6 d
● 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 倍。影子寄存器通过系统复位来复位。
. ?1 h, S$ q/ p+ q. _ 04. RTC低功耗模式和中断4 R; ]7 L4 L0 F# F4 ] A
低功耗模式
+ E( H2 C+ h, R2 o: }' U% e7 k7 M" B1 [/ f# F( p! M. L
# V% ^5 Z2 Y7 Z+ Y7 f ]
RTC中断 所有 RTC 中断均与 EXTI 控制器相连。 要使能 RTC 闹钟中断,需按照以下顺序操作: 将 EXTI 线 17 配置为中断模式并将其使能,然后选择上升沿有效。 配置 NVIC 中的 RTC_Alarm IRQ 通道并将其使能。 配置 RTC 以生成 RTC 闹钟(闹钟 A 或闹钟 B)。 4 A1 q" U9 _' m; d2 I
A& C8 h2 q, x# o
# @9 K9 {% j3 W; ^; B) x
要使能 RTC 唤醒中断,需按照以下顺序操作: 要使能 RTC 入侵中断,需按照以下顺序操作: 要使能 RTC 时间戳中断,需按照以下顺序操作: 将 EXTI 线 21 配置为中断模式并将其使能,然后选择上升沿有效。 配置 NVIC 中的 TAMP_STAMP IRQ 通道并将其使能。 配置 RTC 以检测 RTC 时间戳事件。- J" G' D. |5 v% p% O
2 {4 k9 h; h. {+ f" r; c5 v& j
8 [% L/ S7 ~0 g" u9 \: S' @' p! }% U" k$ |+ N6 F% a
05. RTC寄存器5.1RTC 时间寄存器 (RTC_TR)
8 f% G8 f4 y- ?% h' L& E6 ?* M. aRTC time register# s4 }/ V' ^; I9 l; V0 O
RTC_TR 是日历时间影子寄存器。只能在初始化模式下对该寄存器执行写操作。" b& l0 ]/ `% S+ n. X1 w7 w
偏移地址:0x00
7 c3 x; o* X! c+ e( Q i上电复位值:0x0000 0000
/ d$ Q+ X- y6 `系统复位:当 BYPSHAD = 0 时为 0x0000 0000;当 BYPSHAD = 1 时不受影响。( p' E7 t' C0 H
. B( N& t4 }4 D3 c0 T5 d
3 r# V, ]& W; d* F" S6 t
5.2 RTC 日期寄存器 (RTC_DR)
- W$ k2 e: w G# k3 I; N8 t# M' fRTC date register8 O* \7 T& k7 _: S6 G( r
RTC_DR 是日历日期影子寄存器。只能在初始化模式下对该寄存器执行写操作。
* Y5 `6 P! q. y3 H% z) R* g+ }偏移地址:0x04% g: {, L/ |: v! k# L1 X9 X _7 g8 s1 i
上电复位值:0x0000 2101
: e9 E! T# W9 a2 Q9 U: Z! |& G2 F0 U* z- |4 f7 Y
+ f/ a# `2 C; h2 h: { _; S
9 q' @2 m( u" t0 X) z' u2 h' G
5.3 RTC 控制寄存器 (RTC_CR)% e' w8 x& H( {$ w4 g. m
RTC control register
" ]6 o( h H4 Q; Y偏移地址:0x089 v+ {8 i& ^ M" z9 X
上电复位值:0x0000 0000
0 S- l4 T& K* v系统复位:不受影响# C' `! P5 H* }1 @9 Y3 a
, P# y, E8 y/ \: D7 M* ]
8 H: f5 G" m, @( Q( M% B' f9 z位 22:21 OSEL[1:0]:输出选择 (Output selection); E8 M& O3 p1 B' d
这些位用于选择要连接到 RTC_ALARM 输出的标志
2 H5 L/ ~' I; a4 O00:禁止输出3 L$ K1 n; T$ U9 q. I) |# u; `; H
01:使能闹钟 A 输出
" S) O) l* Y% C! C; I3 x+ i+ M* S3 C10:使能闹钟 B 输出
, i( k0 m8 ^. F8 Z% |7 Y11:使能唤醒输出
, F6 G' q" P2 _. u位 20 POL:输出极性 (Output polarity)
7 d. ~9 |3 m/ a& Z0 R: v3 x* g该位用于配置 RTC_ALARM 输出的极性" N( g5 q& W" L
0:当 ALRAF/ALRBF/WUTF 置 1 时(取决于 OSEL[1:0]),该引脚为高电平. v+ P$ l9 p p1 B0 f j6 N
1:当 ALRAF/ALRBF/WUTF 置 1 时(取决于 OSEL[1:0]),该引脚为低电平
) P5 V z9 Y0 \位 19 COSEL:校准输出选择 (Calibration output selection)
+ q$ K- t. h. a6 j' ~2 l: ]3 z当 COE=1 时,该位可选择 RTC_CALIB 上输出的信号。
' A0 l, e) g7 w9 l$ l# R' O* [! [0:校准输出为 512 Hz: L' A( R; p1 S! K. N
1:校准输出为 1 Hz8 n' i. M% x6 T" K2 H
在 RTCCLK 为 32.768 kHz 且预分频器为其默认值(PREDIV_A=127 且 PREDIV_S=255)6 \: {; ? I+ H0 f3 V ~' F7 b# j
的条件下,这些频率有效。请参见 第 23.3.14 节:校准时钟输出 。
% E3 e* s2 e4 O8 [7 [5 x. g3 |位 18 BKP:备份 (Backup)
5 s/ L) Y' Y. H% L7 W用户可对此位执行写操作以记录是否已对夏令时进行更改。
& g$ ?9 P, C1 Y. U7 Q& p$ X4 [位 17 SUB1H:减少 1 小时(冬季时间更改)(Subtract 1 hour (winter time change))
* V3 y* v) Y8 v) J3 p7 ~; b; v当该位在初始化模式以外的模式下置 1 时,如果当前小时不是 0,则日历时间将减少 1 小9 T4 k+ y& h8 n* p
时。此位始终读为 0。
2 P4 ]2 t/ j7 Q% M) M当前小时为 0 时,将此位置 1 没有任何作用。; J2 R! A, ?, K# t0 Y
0:无作用。% A* y# j! l6 a8 v. o
1:将当前时间减少 1 小时。这可用于冬季时间更改。+ D1 V* o* \! _) n8 _ \/ q3 I
位 16 ADD1H:增加 1 小时(夏季时间更改)(Add 1 hour (summer time change))0 ?! O9 q2 W/ Y M% E
当该位在初始化模式以外的模式下置 1 时,日历时间将增加 1 小时。此位始终读为 0。
: ]$ C+ @( q! u( E0:无作用。
' |/ p( s5 `6 e7 t: A1:将当前时间增加 1 小时。这可用于夏季时间更改
i3 X+ g) r1 _, Y }位 15 TSIE:时间戳中断使能 (Timestamp interrupt enable)4 n1 a% p5 @; t6 K( L, ?1 {+ t
0:禁止时间戳中断
* d" V a# L# O' W$ b1:使能时间戳中断
. f" f# J2 a3 O. z位 14 WUTIE:使能唤醒定时器使能 (Wakeup timer interrupt enable)
: K2 h5 P4 e; L2 F- w C% t0:禁止唤醒定时器中断6 q' o/ C' e$ O; o9 V2 i
1:使能唤醒定时器中断
: i% w% I: W) a3 r, l位 13 ALRBIE: 闹钟 B 中断使能 (Alarm B interrupt enable)
7 A* h0 r2 \4 h6 h0:闹钟 B 中断禁止2 p! S! G+ U6 \, H: U k
1:闹钟 B 中断使能
$ ~8 G: D" a" B% x1 A- |8 q/ m位 12 ALRAIE:闹钟 A 中断使能 (Alarm A interrupt enable)
1 @4 z2 |) v6 |/ G0:禁止闹钟 A 中断/ c* Z2 ]# l& E/ F1 [( P, t3 x
1:使能闹钟 A 中断, f, T+ K* c' a' @) p/ I' V
位 11 TSE:时间戳使能 (Time stamp enable)2 G* v0 h% Z* p
0:禁止时间戳
' ~! C& \, a& h' w1:使能时间戳
. p4 z1 C6 |0 T! o+ ~9 y位 10 WUTE:唤醒定时器使能 (Wakeup timer enable)
! S+ h1 X6 o# P$ T- n0:禁止唤醒定时器
+ T; B# U, y0 m( Y: e g1:使能唤醒定时器 位 9 ALRBE: 闹钟 B 使能 (Alarm B enable)0 ]1 ]% @) G8 M5 V' c( I) P
0:禁止闹钟 B
, o9 x" S5 j8 j, o+ e1:使能闹钟 B
' r \, M' Q! V$ P- c位 8 ALRAE :闹钟 A 使能 (Alarm A enable)
+ h7 ^. y5 N$ `4 C0:禁止闹钟 A
7 `' v4 |( ^, E+ g3 o1:使能闹钟 A
4 r% v% B; v6 C7 b+ b位 7 DCE :粗略数字校准使能 (Coarse digital calibration enable)
# ]! q) r0 }; w* b/ E2 d0:禁止数字校准% M0 B4 d* i( O$ |* b* E+ l; C
1:使能数字校准. g+ d" G; n8 G$ Y7 h1 ~6 y7 R
PREDIV_A 必须大于或等于 64 a. O3 ^; }/ x7 K
位 6 FMT:小时格式 (Hour format)! b0 K# t$ X9 \5 U
0:24 小时/天格式
$ W* a( L8 c% a8 u& _) u6 G1:AM/PM 小时格式# X9 R7 _- e, M8 A
位 5 BYPSHAD:旁路影子寄存器 (Bypass the shadow registers)
" r4 ?! P9 Y" j7 F! i& G$ h% r0:日历值(从 RTC_SSR、RTC_TR 和 RTC_DR 读取时)取自影子寄存器,该影子寄存器
. M, |1 P6 G0 ~$ Y0 F3 T" b6 v, U每两个 RTCCLK 周期更新一次。6 z* o- @# h1 L/ A4 ?( K
1:日历值(从 RTC_SSR、RTC_TR 和 RTC_DR 读取时)直接取自日历计数器。- |# L6 [: n) d- B: g; B
注意:如果 APB1 时钟的频率低于 7 倍的 RTCCLK 频率,则必须将 BYPSHAD 置“ 1 ”。
( Q/ P* X: r" p3 a; q9 ~位 4 REFCKON:参考时钟检测使能(50 Hz 或 60 Hz)(Reference clock detection enable (50 or2 n- k: K m! [( _/ V" f" o& c
60 Hz))" L4 Q+ \5 F: \
0:禁止参考时钟检测6 \( q& C$ n6 I8 P
1:使能参考时钟检测! O! d. A) H |" D; E
注意: PREDIV_S 必须为 0x00FF 。" c8 V) p: D/ r5 z
位 3 TSEDGE:时间戳事件有效边沿 (Timestamp event active edge)
5 S! T$ g% f- B. i0:TIMESTAMP 上升沿生成时间戳事件- ~, K" R8 H, m1 Z7 h0 r4 U& O
1:TIMESTAMP 下降沿生成时间戳事件) f, D0 k# Y4 H2 S) k
TSEDGE 发生更改时,必须复位 TSE 以避免将 TSF 意外置 17 [. D* U/ Y* d, s3 {
位 2:0 WUCKSEL[2:0]:唤醒时钟选择 (Wakeup clock selection)& T% v: y9 Z1 V$ L( M& k
000:选择 RTC/16 时钟4 Y( [& \" \* t9 u) x
001:选择 RTC/8 时钟1 `+ p# d* B. x7 i+ ]6 {
010:选择 RTC/4 时钟
3 y9 t$ I8 H( G$ }) n8 X- Y/ R( I011:选择 RTC/2 时钟
) j$ D2 O& o$ E* x% Z& I- l10x:选择 ck_spre 时钟(通常为 1 Hz)
9 |1 U* i$ A6 F7 `. a, ^. u2 R7 `. X4 H7 m11x:选择 ck_spre 时钟(通常为 1 Hz)并将 WUT 计数器值增加 2 16 (见下面的注释) 温馨提示 WUT = 唤醒单元计数器值。当 WUCKSEL[2:1 = 11] 时, WUT = (0x0000 to 0xFFFF) +0x10000 (增加的值)。' R8 V: j& S1 a& O
只能在初始化模式下 (RTC_ISR/INITF = 1) 对该寄存器的位 7 、 6 和 4 执行写操作。1 E, j3 r3 i9 D+ r5 ~; H V) S
只能在 RTC_CR WUTE 位 = 0 且 RTC_ISR WUTWF 位 = 1 时对该寄存器的位 2 到 0 执行写操作。
3 c2 x7 Q$ s4 V- E% i建议不要在日历小时递增时更改小时,因为这样做会屏蔽日历小时的增量。ADD1H 和 SUB1H 的更改在下一秒生效。! l/ _& F+ d* c! |" T$ R
此寄存器受写保护。第 576 页的 RTC 寄存器写保护中介绍了写访问的过程。
6 p7 Z8 y. n4 a$ b% Z
5.4 RTC 初始化和状态寄存器 (RTC_ISR) _5 i4 E: p; C- L* q+ A
RTC initialization and status register: R4 P: N( P( o5 z1 [, W8 S& W
偏移地址:0x0C
( u" k4 f8 X! J" ^$ I上电复位值:0x0000 0007( j9 s# K; L" |, a; f
系统复位值:不受影响(INIT、INITF 和 RSF 除外,它们在复位时被清零)。
6 |, f) L m9 G# A1 o' `* E, {$ ~ ]5 o" r' ]; {
; `, d } D+ m4 ?- o }. w
位 31:17 保留 位 16 RECALPF:重新校准挂起标志 (Recalibration pending Flag)
; t7 R$ \+ G6 T4 j$ Z, w/ b当软件对 RTC_CALR 寄存器执行写操作时,RECALPF 状态标志将自动置“1”,指示
3 A0 U( L3 W- U" s0 l- i {6 pRTC_CALR 寄存器已屏蔽。当采用新的校准设置时,该位恢复为“0”。请参见 动态重校准一节。 位 15 保留,必须保持复位值。 位 14 TAMP2F:TAMPER2 检测标志 (TAMPER2 detection flag)8 l n: Y5 R' [6 M
在入侵输入 2 上检测到入侵检测事件时,由硬件将此标志置 1。该标志由软件写零清除。 位 13 TAMP1F:入侵检测标志 (Tamper detection flag)) R, a4 G( v( h) `& J* x% \* R( N6 t
当检测到入侵检测事件时,由硬件将此标志置 1。
# p$ [5 W7 X- ?该标志由软件写零清除。 位 12 TSOVF:时间戳溢出标志 (Timestamp overflow flag)
$ L0 G& Q- T( u* Z4 E+ }, x* ]1 W1 {5 C当在 TSF 已置 1 的情况下发生时间戳事件时,由硬件将此标志置 1。4 }: F$ P# P3 s" l) l+ k: l9 ^
该标志由软件写零清除。建议仅在 TSF 位清零之后再检查并清零 TSOVF 位。否则,如果时
6 z/ ]# p4 j- O9 Y: w间戳事件恰好在清零 TSF 位之前刚刚发生,则溢出事件可能会被漏掉。 位 11 TSF:时间戳标志 (Timestamp flag)
! k/ i% z6 n! U发生时间戳事件时,由硬件将此标志置 1。( V& x( a C- t2 d8 J3 X$ ]" l l1 ]
该标志由软件写零清除。 位 10 WUTF:唤醒定时器标志 (Wakeup timer flag)
3 N) W: s4 N3 g9 D. L当唤醒自动重载计数器计数到 0 时,由硬件将此标志置 1。
1 C2 M9 s5 y* ~4 N该标志由软件写零清除。
7 B% u! D" e' T3 ]7 o软件必须在 WUTF 再次置 1 的 1.5 个 RTCCLK 周期之前将该标志清零。 位 9 ALRBF:闹钟 B 标志 (Alarm B flag)
; M5 i, }% W I" C7 ~. \2 f# Q! J$ j! R当时间/日期寄存器(RTC_TR 和 RTC_DR)与闹钟 B 寄存器 (RTC_ALRMBR) 匹配时,由
8 B) N& \6 p; m; e硬件将该标志置 1。% c6 R' ?( `- W/ W/ V
该标志由软件写零清除。 位 8 ALRAF:闹钟 A 标志 (Alarm A flag)" [) o. ^- l+ P8 k# F3 M) C
当时间/日期寄存器(RTC_TR 和 RTC_DR)与闹钟 A 寄存器 (RTC_ALRMAR) 匹配时,由! U+ I, |8 e. K8 w7 R. `2 O
硬件将该标志置 1。
; @ Z" f- q$ Y$ T! |该标志由软件写零清除。 位 7 INIT:初始化模式 (Initialization mode)
" f4 e, c, e1 H: ^0:自由运行模式。) R" H1 ^, q: p( [/ L
1:初始化模式,用于编程时间和日期寄存器(RTC_TR 和 RTC_DR)以及预分频器寄存器: Z( c, m8 }# Z7 _
(RTC_PRER)。计数器停止计数,当 INIT 被复位后,计数器从新值开始计数。 位 6 INITF:初始化标志 (Initialization flag)
6 e' B% h$ I% ?' \3 c/ X U当此位置 1 时,RTC 处于初始化状态,此时可更新事件、日期和预分频器寄存器。/ T6 n% c. }9 A& q1 s' }8 |" _
0:不允许更新日历寄存器。
! w& F+ V( ]& S0 U! \5 T: |: J$ {1:允许更新日历寄存器。 位 5 RSF:寄存器同步标志 (Registers synchronization flag)
3 S" Z) f% m% n每次将日历寄存器的值复制到影子寄存器(RTC_SSRx、RTC_TRx 和 RTC_DRx)时,都1 R" G9 C; n- ]2 Y% a4 \
会由硬件将此位置 1。在初始化模式下、平移操作挂起时 (SHPF=1) 或在旁路影子寄存器模
' b4 G p0 `+ h4 e% ^式 (BYPSHAD=1) 下,该位由硬件清零。该位还可由软件清零。) o9 P# ]& x+ {% r/ a
0:日历影子寄存器尚未同步
9 R$ q1 Y# p5 p$ O2 |& h6 P1:日历影子寄存器已同步 位 4 INITS:初始化状态标志 (Initialization status flag)
' L- A2 d9 T( Y( f. h; K当日历年份字段不为 0 时(上电复位状态),由硬件将该位置 1。
: b1 X2 n- ?# Q: G& o0:日历尚未初始化
9 F7 {7 x" {, {1:日历已经初始化 位 3 SHPF:平移操作挂起 (Shift operation pending) C4 D" I: \( C
0:没有平移操作挂起; n# u/ {& R- ^
1:某个平移操作挂起" i1 K5 @8 F8 `2 l6 ~$ a: x( y
只要通过对 RTC_SHIFTR 寄存器执行写操作来启动平移操作,此标志便由硬件置 1。执行完0 N7 [' b6 s: L; b0 G ]
相应的平移操作后,此标志由硬件清零。对 SHPF 执行写入操作不起作用。 位 2 WUTWF:唤醒定时器写标志 (Wakeup timer write flag)6 u$ P6 q' m4 {/ ?$ l
在 RTC_CR 寄存器中的 WUTE 位置 0 后,当唤醒定时器值可更改时,由硬件将该位置 1。
0 B! t. d. Y: F( m+ b8 T0:不允许更新唤醒定时器配置
?. e% z7 d5 A' }1:允许更新唤醒定时器配置 位 1 ALRBWF:闹钟 B 写标志 (Alarm B write flag)/ J% |7 b$ {, W% `& h
在 RTC_CR 寄存器中的 ALRBIE 位置 0 之后,当闹钟 B 的值可更改时,由硬件将该位置 1。7 R6 o9 G! t4 c2 ~( Z: Z/ ~2 N
该位在初始化模式下由硬件清零。/ G0 } Y; T+ `; s
0:不允许更新闹钟 B7 R5 M* }5 y$ R
1:允许更新闹钟 B 位 0 ALRAWF:闹钟 A 写标志 (Alarm A write flag)
; J. p2 j5 s! S# i5 G% z* ]* m在 RTC_CR 寄存器中的 ALRAE 位置 0 后,当闹钟 A 的值可更改时,由硬件将该位置 1。6 G- X* `& Z! p5 Q4 j5 m
该位在初始化模式下由硬件清零。2 D+ t D% j0 G! s2 `
0:不允许更新闹钟 A" @& c4 B, s2 n1 p* w
1:允许更新闹钟 A / a( e; i+ O2 _8 p: A
5.5 RTC 预分频器寄存器 (RTC_PRER)
0 w- k( X+ d4 h+ H. \- t2 }RTC prescaler register
% |8 l( L' d ~" i' P偏移地址:0x10* j$ @. F4 ~) ?$ z( h) D
上电复位值:0x007F 00FF # x0 ]& D+ M* H0 k+ b
系统复位:不受影响! p+ q% `+ q9 @/ M' G
0 Z3 p: V5 Y" L4 i/ u& J8 }
2 M7 C: s2 U6 \/ C) M9 x 5.6 RTC 唤醒定时器寄存器 (RTC_WUTR)
0 g; a; D( ^8 G- p$ N" }RTC wakeup timer register$ U' A( ~' I V
偏移地址:0x14/ @3 [- L6 F; Q) a+ l, v1 I
上电复位值:0x0000 FFFF
* B+ u" ~" m H$ }- m2 g. _9 c系统复位:不受影响, B4 ?( \& ?0 y B" w' _( D
7 ~) A x- G# s+ D: x) f1 {& u& U3 a! h- c
位 31:16 保留 位 15:0 WUT[15:0]:唤醒自动重载值位 (Wakeup auto-reload value bit)
9 {& |9 D( n4 f+ {& v- z( k当使能唤醒定时器时(WUTE 置 1),每 (WUT[15:0] + 1) 个 ck_wut 周期将 WUTF 标志置 1一次。ck_wut 周期通过 RTC_CR 寄存器的 WUCKSEL[2:0] 位进行选择。" l& _1 Z/ p. k% a# i- h: J' e
当 WUCKSEL[2] = 1 时,唤醒定时器变为 17 位,WUCKSEL[1] 等效为 WUT[16],即要重载到定时器的最高有效位。 注意: WUTF 第一次置 1 发生在 WUTE 置 1 之后 (WUT+1) 个 ck_wut 周期。禁止在& _% Y1 `$ `: q2 G& j
WUCKSEL[2:0]=011(RTCCLK/2) 时将 WUT[15:0] 设置为 0x0000 。 + b2 A- v4 @8 V/ d$ G7 U
5.7 RTC 校准寄存器 (RTC_CALIBR)4 T3 L5 K* [. z" K0 { L
RTC calibration register- a1 Y$ o+ E& @% f& Z4 s
偏移地址:0x18
1 ~. P7 W8 P- w0 e上电复位值:0x0000 0000 系统复位:不受影响
3 v( O0 z y0 O& E* q4 L& k8 O
1 D$ }5 J9 O# d) A% I4 A9 u$ b' B3 M/ G2 k) U" b- m
5.8 RTC 闹钟 A 寄存器 (RTC_ALRMAR)* ]9 T; y: e. q" p, r) u
RTC alarm A register( T' r- B2 G2 G* K r% V, F
偏移地址:0x1C2 E) @. F0 `9 E/ N
上电复位值:0x0000 0000( S) M" b, d; h8 g2 d
系统复位:不受影响 , g3 }* \& a4 \5 v( ?
9 H5 U2 h5 q, Q# y7 a
' I( p8 [1 I4 v- C) m: Z; x K7 g! X 位 31 MSK4:闹钟 A 日期掩码 (Alarm A date mask)7 r& p8 i. }& i) z
0:如果日期/日匹配,则闹钟 A 置 1( K" `8 Y# Q9 \1 ^( R7 o5 @
1:在闹钟 A 比较中,日期/日无关 位 30 WDSEL:星期几选择 (Week day selection)
2 E5 g9 @, E2 C' h- H' b0:DU[3:0] 代表日期的个位8 [5 f, a3 J: d
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)
0 T' o) R4 U. _: x& @; R0:如果小时匹配,则闹钟 A 置 1; P: |+ {. Y3 y, u* E6 w
1:在闹钟 A 比较中,小时无关 位 22 PM :AM/PM 符号 (AM/PM notation)$ x' U L! L7 }6 Z3 R' N
0:AM 或 24 小时制$ A$ q3 |6 ~5 m9 {3 ~5 X
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)
7 _+ `% D& I2 s8 O1 C0:如果分钟匹配,则闹钟 A 置 14 u; j( g2 g; r9 d! A0 W5 f
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)
2 K( P. G4 v. }8 P) y2 t0:如果秒匹配,则闹钟 A 置 1 1:在闹钟 A 比较中,秒无关 位 6:4 ST[2:0]:秒的十位(BCD 格式)(Second tens in BCD format)。9 p+ a+ l9 W1 W7 W7 x: y
位 3:0 SU[3:0]:秒的个位(BCD 格式)(Second units in BCD format)。
( y0 ~+ K% X2 W/ T! f; Z/ Y/ ] 5.9 RTC 写保护寄存器 (RTC_WPR)/ _1 C! }' `0 q' y
RTC write protection register
% b* c7 Z7 g7 i& L% Z! s: K偏移地址:0x24
0 @0 Z- O4 i/ U( |; P复位值:0x0000 0000 ; d. @" H5 I& B; {
8 {6 I& L9 v: e
+ x0 Q, G/ N) F& Q8 p 5.10 RTC 亚秒寄存器 (RTC_SSR), c& Y" Q3 H4 X# z
RTC sub second register
! _! @0 i" c1 |: ]偏移地址:0x28
! X0 Q) p4 t& X% w上电复位值:0x0000 0000
/ V4 ] `! J5 B# l% G2 w# Q系统复位:当 BYPSHAD = 0 时为 0x0000 0000;当 BYPSHAD = 1 时不受影响。- F0 V7 ?, \% b; j% E8 Y
% Y! C2 {7 S% B# S' c
7 W9 _+ g! |/ l4 q+ T& { 5.11 RTC 时间戳时间寄存器 (RTC_TSTR)) X) m+ Y+ C I3 g/ G1 A# R
RTC time stamp time register( Y5 L7 z5 d+ p' R5 D$ c
偏移地址:0x30
! r. r7 Q! |1 g- M; s上电复位值:0x0000 00006 P$ } X5 k6 ^7 l7 x# t; N
系统复位:不受影响4 y2 P* {& k- r0 ~
6 ?& D K0 S- b7 S$ u* l
5.12 RTC 备份寄存器 (RTC_BKPxR), b7 q7 }; K5 R; Z
RTC backup registers
% \* d2 l @' e9 s偏移地址:0x50 到 0x9C
' p2 g$ E1 }' I$ h7 ~上电复位值:0x0000 0000
, }" o; i; l ~- {系统复位:不受影响 ' B' S1 F5 ?( L# ?! {. ^0 F
! `; Z. i g# f& n6 F0 C+ C
/ x/ U! K+ y; ]( k# U" x5 N' ?- s% _5 k: D
|