01. RTC概述 实时时钟 (RTC) 是一个独立的 BCD 定时器/计数器。RTC 提供一个日历时钟、两个可编程闹钟中断,以及一个具有中断功能的周期性可编程唤醒标志。RTC 还包含用于管理低功耗模式的自动唤醒单元。 7 S. e j8 C% i) \, X* j
两个 32 位寄存器包含二进码十进数格式 (BCD) 的秒、分钟、小时(12 或 24 小时制)、星期几、日期、月份和年份。此外,还可提供二进制格式的亚秒值。 " m& m* C. A4 n2 h" W4 R
系统可以自动将月份的天数补偿为 28、29(闰年)、30 和 31 天。并且还可以进行夏令时补偿。 , c2 v1 x; g. j* ~/ G, W
其它 32 位寄存器还包含可编程的闹钟亚秒、秒、分钟、小时、星期几和日期。此外,还可以使用数字校准功能对晶振精度的偏差进行补偿。 a/ R5 k, B h' F! M
上电复位后,所有 RTC 寄存器都会受到保护,以防止可能的非正常写访问。 ; g( M3 D: f, p+ m2 X0 h$ \
无论器件状态如何(运行模式、低功耗模式或处于复位状态),只要电源电压保持在工作范围内,RTC 便不会停止工作。 $ R8 H% o5 k, L; p1 ^0 |1 p
02. RTC主要特性
( S: L) ^; o4 g {RTC 单元的主要特性如下(参见 图 222 : RTC 框图 ):
$ X7 D7 D% @: c) Z$ V● 包含亚秒、秒、分钟、小时(12/24 小时制)、星期几、日期、月份和年份的日历。
) m8 e+ O S0 T, s● 软件可编程的夏令时补偿。/ l% L; b% ~" n( w
● 两个具有中断功能的可编程闹钟。可通过任意日历字段的组合驱动闹钟。9 d4 M1 {" [ N
● 自动唤醒单元,可周期性地生成标志以触发自动唤醒中断。
3 ^2 {. b" p, H" E) u; h# F' z● 参考时钟检测:可使用更加精确的第二时钟源(50 Hz 或 60 Hz)来提高日历的精确度。! V r& j4 [2 o6 d" ^. G* F
● 利用亚秒级移位特性与外部时钟实现精确同步。. W3 x! [; X$ ?4 x/ @8 [
● 可屏蔽中断/事件:" x& B: I7 o2 J+ d$ R; |
— 闹钟 A8 }$ Q% J o+ }' [
— 闹钟 B# u6 h) Y' z7 H
— 唤醒中断" I- s* u5 }- q0 R
— 时间戳9 |1 E! B- i V! k
— 入侵检测
) P: l/ e1 }9 s( B2 P● 数字校准电路(周期性计数器调整)0 B* ]' z0 |* g$ t
— 精度为 5 ppm
% J( c/ o8 y- R6 c8 B— 精度为 0.95 ppm,在数秒钟的校准窗口中获得% f. ?- q# R# [. s# g7 X" h, O
● 用于事件保存的时间戳功能(1 个事件)8 b4 S* E. v: h7 F, j0 T6 p3 g7 v0 e: E
● 入侵检测:( c0 T }0 A# _# T3 o# N/ f5 f8 F3 L
— 2 个带可配置过滤器和内部上拉的入侵事件6 _9 m# P7 Q3 d% @8 R
● 20 个备份寄存器(80 字节)。发生入侵检测事件时,将复位备份寄存器。
● 复用功能输出 (RTC_OUT),可选择以下两个输出之一:
3 B3 V' Z+ {1 [3 s6 ?0 J— RTC_CALIB:512 Hz 或 1 Hz 时钟输出(LSE 频率为 32.768 kHz)。6 K( p% h- \9 Q* S' c" z% A
可通过将 RTC_CR 寄存器中的 COE[23] 位置 1 来使能此输出。该输出可连接到器件 RTC_AF1 功能。
" V6 d K$ D9 N' Y4 S) X/ W% D— RTC_ALARM(闹钟 A、闹钟 B 或唤醒)。: E J. k. S' |
可通过配置 RTC_CR 寄存器的 OSEL[1:0] 位选择此输出。该输出可连接到器件RTC_AF1 功能。8 `0 B0 @, O, T8 P q3 z% q
● RTC 复用功能输入:" l$ ~; U" m! E5 U
— RTC_TS:时间戳事件检测。该输入可连接到器件 RTC_AF1 和 RTC_AF2 功能。+ F( F8 [1 ~1 Z3 C3 `6 L- W
— RTC_TAMP1:TAMPER1 事件检测。该输入可连接到器件 RTC_AF1 和 RTC_AF2功能。
C' \1 @+ `$ g& M— RTC_TAMP2:TAMPER2 事件检测。0 }: g ]/ o6 U
— RTC_REFIN:参考时钟输入(通常为市电,50 Hz 或 60 Hz)。2 y9 ~6 f; j* S
) m5 E& O" n1 |0 Y) M f
6 ?& u3 p4 l( ~5 k$ l& l+ D7 Z' o2 y 03. RTC部分功能3.1 时钟和预分频器7 H& K. x+ s' t5 q$ x# P# O
RTC 时钟源 (RTCCLK) 通过时钟控制器从 LSE 时钟、LSI 振荡器时钟以及 HSE 时钟三者中选择。有关 RTC 时钟源配置的更多信息,请参见 第 6 节:复位和时钟控制 (RCC)。 可编程的预分频器阶段可生成 1 Hz 的时钟,用于更新日历。为最大程度地降低功耗,预分频器分为 2 个可编程的预分频器(参见 图 222 : RTC 框图 ):1 }, l! b# w4 S. I% o
● 一个通过 RTC_PRER 寄存器的 PREDIV_A 位配置的 7 位异步预分频器。
1 L5 M' T& H! q9 _7 a( c● 一个通过 RTC_PRER 寄存器的 PREDIV_S 位配置的 15 位同步预分频器。 注意: 使用两个预分频器时,推荐将异步预分频器配置为较高的值,以最大程度降低功耗。 要使用频率为 32.768 kHz 的 LSE 获得频率为 1 Hz 的内部时钟 (ck_spre),需要将异步预分频系数设置为 128,并将同步预分频系数设置为 256。分频系数的最小值为 1,最大值为 2 ^22 。这对应于约为 4 MHz 的最大输入频率。f ck_apre 可根据以下公式得出:
$ F% _+ O% R$ p/ I& E0 L& V9 }+ z( Q3 S$ k: h3 R7 I1 }
8 R% r* f4 [; q5 K8 [" d3 V8 |3 |
" U6 y) B, _+ C! ?; x: k- F 3.2 实时时钟和日历% L4 \# W& U \
RTC 日历时间和日期寄存器可通过与 PCLK1(APB1 时钟)同步的影子寄存器来访问。这些时间和日期寄存器也可以直接访问,这样可避免等待同步的持续时间。 ● RTC_SSR 对应于亚秒# G3 A7 z+ j6 \7 @" {9 c# _: Y: F+ @
● RTC_TR 对应于时间. d* j, C7 e, q
● 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 倍。影子寄存器通过系统复位来复位。
/ M: `! J; |( B# M" `1 h1 k 04. RTC低功耗模式和中断# ?3 O8 C5 Y* m9 ~) _: U* @* ?
低功耗模式9 G& H$ F- O$ {& [
0 d; O, V) d8 {) f& H% ~7 B$ G/ {
* V1 _. m& J3 \0 X( L! D6 Z! ` RTC中断 所有 RTC 中断均与 EXTI 控制器相连。 要使能 RTC 闹钟中断,需按照以下顺序操作: 将 EXTI 线 17 配置为中断模式并将其使能,然后选择上升沿有效。 配置 NVIC 中的 RTC_Alarm IRQ 通道并将其使能。 配置 RTC 以生成 RTC 闹钟(闹钟 A 或闹钟 B)。 6 i; s2 g% O! M- P& t, H; v
3 H u. i5 G v' D4 X- m5 L7 n. o' t
4 h3 O: [' S6 U' f
要使能 RTC 唤醒中断,需按照以下顺序操作: 要使能 RTC 入侵中断,需按照以下顺序操作: 要使能 RTC 时间戳中断,需按照以下顺序操作: 将 EXTI 线 21 配置为中断模式并将其使能,然后选择上升沿有效。 配置 NVIC 中的 TAMP_STAMP IRQ 通道并将其使能。 配置 RTC 以检测 RTC 时间戳事件。
$ W& @( N, V/ W& H, `1 N! p5 O) d
% c4 Q6 ^+ [# L; d! u% q! p) F' z) B. f. O' ^+ s( Y" i
* Q H9 w U' w
05. RTC寄存器5.1RTC 时间寄存器 (RTC_TR)" V8 l, @- }. I& K
RTC time register
3 \2 y+ Y5 x; [" {: Z+ @RTC_TR 是日历时间影子寄存器。只能在初始化模式下对该寄存器执行写操作。
4 O) M8 Y& e: Y; I- f+ t偏移地址:0x00) m* M4 W& s& U
上电复位值:0x0000 0000
2 n2 w A9 }" Z8 S5 g# K' E+ Z系统复位:当 BYPSHAD = 0 时为 0x0000 0000;当 BYPSHAD = 1 时不受影响。5 Z" _5 `9 l( _, E3 d7 O
* k% M' |/ V y! |! s/ }# Q% j- s
1 L/ Y5 G8 q' Y 5.2 RTC 日期寄存器 (RTC_DR)
2 [$ T9 F' g0 E0 e: h. K( b( G; vRTC date register9 d% C/ m/ S. C8 k0 Z8 D" ]8 c
RTC_DR 是日历日期影子寄存器。只能在初始化模式下对该寄存器执行写操作。
- c* W9 ~- f# r& S) y# W% n- v, @1 p偏移地址:0x04
: i" ^; D( g3 {上电复位值:0x0000 2101
. B, w3 G3 m, j' ^$ a- P5 ?" }- ]) D' Y+ t' X
+ z- J' ^% n$ H: u4 V
! j" H/ j( x' r8 x/ L2 Z 5.3 RTC 控制寄存器 (RTC_CR)
9 F0 z$ ?# v; L/ WRTC control register
# `* J* ~; m( \6 j: O: d* T, q偏移地址:0x08/ q! h3 c; d X- Z9 K
上电复位值:0x0000 0000
3 q T! @$ `% g) g2 j, n# |( R7 w系统复位:不受影响; N( _7 s; w! D1 N7 W7 Z" F
! Y$ Y0 k+ {* h
4 _9 `( n) f C位 22:21 OSEL[1:0]:输出选择 (Output selection)& X( j8 R7 D: o2 I0 E
这些位用于选择要连接到 RTC_ALARM 输出的标志5 P1 X9 p* o, U, h
00:禁止输出
5 W$ L3 P0 Q% E8 t01:使能闹钟 A 输出: W$ q2 s- ]. R5 e- m
10:使能闹钟 B 输出
+ D2 l# `0 E# p4 f* R* l; m11:使能唤醒输出
% z! F( G, W( s; m8 i位 20 POL:输出极性 (Output polarity)! t7 @7 H: x/ y# }' g
该位用于配置 RTC_ALARM 输出的极性- |* P, m" F1 q7 t: u" V+ h
0:当 ALRAF/ALRBF/WUTF 置 1 时(取决于 OSEL[1:0]),该引脚为高电平/ C* @6 V% j( l6 v6 r/ G6 Q
1:当 ALRAF/ALRBF/WUTF 置 1 时(取决于 OSEL[1:0]),该引脚为低电平) \4 N) n0 F9 _9 X* U, V
位 19 COSEL:校准输出选择 (Calibration output selection)7 Q) H% O& G% o; H
当 COE=1 时,该位可选择 RTC_CALIB 上输出的信号。8 t5 B9 o6 \) F" K* Y' N( F
0:校准输出为 512 Hz
9 y2 \# e1 O; S, q" f" i/ W" ?3 ^ T1:校准输出为 1 Hz" Z; L6 e e& ]2 E
在 RTCCLK 为 32.768 kHz 且预分频器为其默认值(PREDIV_A=127 且 PREDIV_S=255)
) E, ]8 b2 b' n) U; D! W的条件下,这些频率有效。请参见 第 23.3.14 节:校准时钟输出 。8 p7 _. }5 n; h0 E8 K4 T) }
位 18 BKP:备份 (Backup)' X3 H0 r* D4 f2 e, K2 B; f
用户可对此位执行写操作以记录是否已对夏令时进行更改。
0 P( q- a3 p/ |- f) v8 l位 17 SUB1H:减少 1 小时(冬季时间更改)(Subtract 1 hour (winter time change))
2 L% R. U: o9 I4 `, v6 f7 ]当该位在初始化模式以外的模式下置 1 时,如果当前小时不是 0,则日历时间将减少 1 小3 `$ P3 S7 E" |0 u: ]
时。此位始终读为 0。
# H5 K. @ Y1 h2 N5 t0 S& j9 v当前小时为 0 时,将此位置 1 没有任何作用。% ?7 O; q) o5 x. R) P8 R u
0:无作用。
' X3 ~$ c0 L0 S! L, i) E1:将当前时间减少 1 小时。这可用于冬季时间更改。
* C. ~- f/ ^6 y# J% c5 g% T+ M位 16 ADD1H:增加 1 小时(夏季时间更改)(Add 1 hour (summer time change))
3 d$ T+ \9 Z9 j. U当该位在初始化模式以外的模式下置 1 时,日历时间将增加 1 小时。此位始终读为 0。( |; x6 g( x, h1 Y/ ]2 ^
0:无作用。- h1 t5 i& |1 I* O
1:将当前时间增加 1 小时。这可用于夏季时间更改
+ M+ Y" {' j! p% S位 15 TSIE:时间戳中断使能 (Timestamp interrupt enable)
- n/ e+ s( C2 v/ R0 h, k0:禁止时间戳中断7 p7 j$ v9 n# ~ R) D
1:使能时间戳中断4 m: l0 Q; m e8 Q' r
位 14 WUTIE:使能唤醒定时器使能 (Wakeup timer interrupt enable) M; |) y" \7 Z. S" X( `
0:禁止唤醒定时器中断
$ \$ R. u. ?' |. y1:使能唤醒定时器中断8 ^5 G, C7 Q% R7 z* X( X
位 13 ALRBIE: 闹钟 B 中断使能 (Alarm B interrupt enable)0 E& T+ q5 R: ~& a/ H
0:闹钟 B 中断禁止8 x r. U+ W$ B: Q5 [
1:闹钟 B 中断使能# W. M' e l$ ~: E, C7 V4 K5 ]
位 12 ALRAIE:闹钟 A 中断使能 (Alarm A interrupt enable)" K- F7 N9 p2 l9 S/ f7 p8 k
0:禁止闹钟 A 中断
0 v p' }2 y/ H. X# I N0 x1:使能闹钟 A 中断
$ h. `5 }/ v7 T; A% M. I- P位 11 TSE:时间戳使能 (Time stamp enable)% s, W( I0 x: U+ h# W' j ~
0:禁止时间戳
9 Z6 x. S8 R# Q+ m A5 q1:使能时间戳
4 R) P9 m0 P2 [- D, U) k位 10 WUTE:唤醒定时器使能 (Wakeup timer enable)
1 r+ a) ]% ~$ \2 U- j1 A0 {0:禁止唤醒定时器8 j& Q6 [( P1 R5 [) b
1:使能唤醒定时器 位 9 ALRBE: 闹钟 B 使能 (Alarm B enable)
! H5 S" S0 `9 M9 p; k$ a5 j0:禁止闹钟 B: c3 D. h0 s8 _
1:使能闹钟 B
$ u& Y+ t; w1 q3 }$ y位 8 ALRAE :闹钟 A 使能 (Alarm A enable)0 b) [* W8 Y( Z3 H0 y4 S
0:禁止闹钟 A
t* ~( x. Z! L+ U% Y8 U8 \! |1:使能闹钟 A
: o& x1 X3 @) J位 7 DCE :粗略数字校准使能 (Coarse digital calibration enable)& N2 r9 O4 \( I4 x8 ]
0:禁止数字校准
/ h& b7 O. d7 Z% ]( o5 ]8 m1:使能数字校准
j& ~" M* @" g+ d: N. z6 b$ j" N3 MPREDIV_A 必须大于或等于 62 Y" Q4 a; f% c+ m- K$ ?
位 6 FMT:小时格式 (Hour format)! V2 Q* R# ?" o w3 A, ~ J: M
0:24 小时/天格式 y, ?2 {4 ~4 _; X! f) U: I1 C
1:AM/PM 小时格式
. v! t9 C K6 k, \$ Z位 5 BYPSHAD:旁路影子寄存器 (Bypass the shadow registers)
* l7 e, O8 T- y* N/ @, A8 D/ z0:日历值(从 RTC_SSR、RTC_TR 和 RTC_DR 读取时)取自影子寄存器,该影子寄存器, c4 v( {0 L6 M' s
每两个 RTCCLK 周期更新一次。0 b, }* D& R; c# j+ I7 J
1:日历值(从 RTC_SSR、RTC_TR 和 RTC_DR 读取时)直接取自日历计数器。
! Z% I) e8 L9 q/ l注意:如果 APB1 时钟的频率低于 7 倍的 RTCCLK 频率,则必须将 BYPSHAD 置“ 1 ”。2 H9 x `3 J8 S
位 4 REFCKON:参考时钟检测使能(50 Hz 或 60 Hz)(Reference clock detection enable (50 or
! }% q* t' _0 ?( F60 Hz))
9 E2 [0 I2 d4 U, E9 A0:禁止参考时钟检测" B" c v# O8 h- r a2 o+ {
1:使能参考时钟检测
9 J4 } M; M* a( e+ C: R注意: PREDIV_S 必须为 0x00FF 。3 t4 m, w% V7 Q2 L9 ?6 E) G. v
位 3 TSEDGE:时间戳事件有效边沿 (Timestamp event active edge) r* Q$ l3 j5 d/ t8 z+ |/ y0 @8 J7 M
0:TIMESTAMP 上升沿生成时间戳事件
/ m: i& m) C1 z1 I1:TIMESTAMP 下降沿生成时间戳事件' i; J6 ?' |2 _9 x# y* O
TSEDGE 发生更改时,必须复位 TSE 以避免将 TSF 意外置 1
* U& M# v& o/ v" M位 2:0 WUCKSEL[2:0]:唤醒时钟选择 (Wakeup clock selection)
: b3 c- [* A9 G# \000:选择 RTC/16 时钟/ E4 f- ?4 z/ M/ G: L) O
001:选择 RTC/8 时钟
$ F U4 r# ?6 @! S* v% q1 I010:选择 RTC/4 时钟
5 N$ p6 Z3 g4 N r6 I011:选择 RTC/2 时钟) d0 \# }) D) t, u( J
10x:选择 ck_spre 时钟(通常为 1 Hz)8 O( g" J( d( G( E" ^- ]
11x:选择 ck_spre 时钟(通常为 1 Hz)并将 WUT 计数器值增加 2 16 (见下面的注释) 温馨提示 WUT = 唤醒单元计数器值。当 WUCKSEL[2:1 = 11] 时, WUT = (0x0000 to 0xFFFF) +0x10000 (增加的值)。
9 E& o$ M% ]* B9 a3 d只能在初始化模式下 (RTC_ISR/INITF = 1) 对该寄存器的位 7 、 6 和 4 执行写操作。
; J' ` ?4 T& O1 ]& |' j! w/ H5 |# e0 R只能在 RTC_CR WUTE 位 = 0 且 RTC_ISR WUTWF 位 = 1 时对该寄存器的位 2 到 0 执行写操作。
7 ]! s# q( B$ X5 z* c建议不要在日历小时递增时更改小时,因为这样做会屏蔽日历小时的增量。ADD1H 和 SUB1H 的更改在下一秒生效。1 l" A4 X8 ^3 e, U W
此寄存器受写保护。第 576 页的 RTC 寄存器写保护中介绍了写访问的过程。
6 Y6 J0 g1 z/ {6 w: L' N' @+ o1 O
5.4 RTC 初始化和状态寄存器 (RTC_ISR)
3 U% g) ?2 i, m, A: x, t: yRTC initialization and status register0 K! Y! u4 O W) z3 P
偏移地址:0x0C3 V, _( p3 D% f* p5 i$ r
上电复位值:0x0000 0007
* K* C# m) Y/ H, ^/ @6 k系统复位值:不受影响(INIT、INITF 和 RSF 除外,它们在复位时被清零)。
7 ~, m: X3 Z$ `* v9 F& w& ^' ]( n- [' m" ^, B4 V# z
- F. e( {; F* {( n* C7 L2 } 位 31:17 保留 位 16 RECALPF:重新校准挂起标志 (Recalibration pending Flag)! C" C' l! A! x* u' F, m2 u4 X
当软件对 RTC_CALR 寄存器执行写操作时,RECALPF 状态标志将自动置“1”,指示/ s5 y( G+ ?$ G$ v' B4 L
RTC_CALR 寄存器已屏蔽。当采用新的校准设置时,该位恢复为“0”。请参见 动态重校准一节。 位 15 保留,必须保持复位值。 位 14 TAMP2F:TAMPER2 检测标志 (TAMPER2 detection flag)
* K- r% _: c3 v9 n在入侵输入 2 上检测到入侵检测事件时,由硬件将此标志置 1。该标志由软件写零清除。 位 13 TAMP1F:入侵检测标志 (Tamper detection flag)
0 c0 o9 q0 l) X, R5 z1 w当检测到入侵检测事件时,由硬件将此标志置 1。" }. N1 h! ~% C1 w" k# D
该标志由软件写零清除。 位 12 TSOVF:时间戳溢出标志 (Timestamp overflow flag)& H, U" u0 ^5 @ @
当在 TSF 已置 1 的情况下发生时间戳事件时,由硬件将此标志置 1。
/ N8 l) x% J2 q5 J& X9 a% R该标志由软件写零清除。建议仅在 TSF 位清零之后再检查并清零 TSOVF 位。否则,如果时7 o8 F+ \ h6 m$ Y _4 J8 t0 m
间戳事件恰好在清零 TSF 位之前刚刚发生,则溢出事件可能会被漏掉。 位 11 TSF:时间戳标志 (Timestamp flag)
+ @% {3 J; T% E, W发生时间戳事件时,由硬件将此标志置 1。
+ r( q6 I4 r% Z% _9 ~该标志由软件写零清除。 位 10 WUTF:唤醒定时器标志 (Wakeup timer flag)
' x; `7 t0 X$ r, z1 i当唤醒自动重载计数器计数到 0 时,由硬件将此标志置 1。
, S3 o1 q5 M" z该标志由软件写零清除。
/ D$ G+ B; D9 h' ]软件必须在 WUTF 再次置 1 的 1.5 个 RTCCLK 周期之前将该标志清零。 位 9 ALRBF:闹钟 B 标志 (Alarm B flag)
' l4 Q7 Q/ G. s4 V' ] T$ E4 J! p当时间/日期寄存器(RTC_TR 和 RTC_DR)与闹钟 B 寄存器 (RTC_ALRMBR) 匹配时,由
8 w' T+ X" e, h! X0 L1 x0 T) e8 P8 Y硬件将该标志置 1。
) x8 }; X4 Q0 S5 B该标志由软件写零清除。 位 8 ALRAF:闹钟 A 标志 (Alarm A flag)
+ ^1 y! H+ F/ P5 J; E2 Y当时间/日期寄存器(RTC_TR 和 RTC_DR)与闹钟 A 寄存器 (RTC_ALRMAR) 匹配时,由7 j5 Z4 b# B* _; Q
硬件将该标志置 1。. \( M: d1 P' E' D! w
该标志由软件写零清除。 位 7 INIT:初始化模式 (Initialization mode)
3 i- f& B3 U) J- }2 u7 }0:自由运行模式。8 g" c' f: X$ n/ c$ {5 f
1:初始化模式,用于编程时间和日期寄存器(RTC_TR 和 RTC_DR)以及预分频器寄存器* Z. L; \5 z" p# K$ T
(RTC_PRER)。计数器停止计数,当 INIT 被复位后,计数器从新值开始计数。 位 6 INITF:初始化标志 (Initialization flag)7 ^. v5 o2 Z7 ?, B5 L9 a) j
当此位置 1 时,RTC 处于初始化状态,此时可更新事件、日期和预分频器寄存器。
! P& i' z0 S9 v" S) k0:不允许更新日历寄存器。
" h& r* F# g, t1:允许更新日历寄存器。 位 5 RSF:寄存器同步标志 (Registers synchronization flag)+ h% `9 E4 M# j. u2 f
每次将日历寄存器的值复制到影子寄存器(RTC_SSRx、RTC_TRx 和 RTC_DRx)时,都
3 r; X/ j' k( V2 z0 [, ^会由硬件将此位置 1。在初始化模式下、平移操作挂起时 (SHPF=1) 或在旁路影子寄存器模* @1 x3 ]7 o! |) @
式 (BYPSHAD=1) 下,该位由硬件清零。该位还可由软件清零。
/ \" L" ]% b& D0:日历影子寄存器尚未同步/ L% h/ U* U3 Q
1:日历影子寄存器已同步 位 4 INITS:初始化状态标志 (Initialization status flag)
) ^" r, E( E3 o3 }' s4 D当日历年份字段不为 0 时(上电复位状态),由硬件将该位置 1。
5 t4 Z) }0 X f F0 L0:日历尚未初始化
) v4 r+ d6 ?) L) K* a1:日历已经初始化 位 3 SHPF:平移操作挂起 (Shift operation pending)# g) F9 y& H# H" z. `- r2 a4 c
0:没有平移操作挂起, E$ d" j% |0 O
1:某个平移操作挂起7 e Z. e6 |) z. P; A) F
只要通过对 RTC_SHIFTR 寄存器执行写操作来启动平移操作,此标志便由硬件置 1。执行完
8 e, p6 _ V: P {相应的平移操作后,此标志由硬件清零。对 SHPF 执行写入操作不起作用。 位 2 WUTWF:唤醒定时器写标志 (Wakeup timer write flag)
$ Z: \+ g3 J7 u" @& c7 J在 RTC_CR 寄存器中的 WUTE 位置 0 后,当唤醒定时器值可更改时,由硬件将该位置 1。
" \6 n+ F4 v0 R- Q* h0:不允许更新唤醒定时器配置
9 J7 }2 y4 h7 l; m. ^1:允许更新唤醒定时器配置 位 1 ALRBWF:闹钟 B 写标志 (Alarm B write flag)9 j3 O" J0 G9 V9 X
在 RTC_CR 寄存器中的 ALRBIE 位置 0 之后,当闹钟 B 的值可更改时,由硬件将该位置 1。; v2 k" Q: m5 y
该位在初始化模式下由硬件清零。
. ^, g5 B$ [% R# ?1 o: j5 I0:不允许更新闹钟 B9 Y* ~# R* f* @8 p- w
1:允许更新闹钟 B 位 0 ALRAWF:闹钟 A 写标志 (Alarm A write flag)6 g' M \, ]* E' u9 D3 s
在 RTC_CR 寄存器中的 ALRAE 位置 0 后,当闹钟 A 的值可更改时,由硬件将该位置 1。7 {+ I y1 O `5 Q3 H N! z
该位在初始化模式下由硬件清零。5 h; g$ j3 k ]
0:不允许更新闹钟 A/ b. K9 I; M5 v1 x4 ^
1:允许更新闹钟 A 5 A# u+ W; S# L+ `! o+ k- V
5.5 RTC 预分频器寄存器 (RTC_PRER)
! G; L( j" O; e) F4 ?# U/ oRTC prescaler register
' t" y, @8 N/ n8 [3 ^偏移地址:0x10# s; v+ S5 G7 W. I; Q
上电复位值:0x007F 00FF 8 c/ b9 j6 m! c! f7 |
系统复位:不受影响
$ H9 E$ h4 V" L9 `! N3 U; C( H3 v4 _0 l. i& F/ X3 v# S
: {8 X/ o; G/ \& S, a8 y, r8 O 5.6 RTC 唤醒定时器寄存器 (RTC_WUTR)' E& _( s( d1 D# k; {5 ? @
RTC wakeup timer register7 U" }! V$ \ e' J9 A3 Y
偏移地址:0x14
b2 `4 T3 a0 M; S& K' s( ]: o上电复位值:0x0000 FFFF5 E: l0 w- ]5 C2 t L) y* B
系统复位:不受影响
/ Z5 C# j3 J4 Z* D! k
+ T$ i, I# u6 i) y8 s: J. H" {2 V% X5 C) ~5 _. w# T; E4 e4 I
位 31:16 保留 位 15:0 WUT[15:0]:唤醒自动重载值位 (Wakeup auto-reload value bit)' ^, F3 u" ?" M4 ^3 Y
当使能唤醒定时器时(WUTE 置 1),每 (WUT[15:0] + 1) 个 ck_wut 周期将 WUTF 标志置 1一次。ck_wut 周期通过 RTC_CR 寄存器的 WUCKSEL[2:0] 位进行选择。
1 K0 [ D- `. _& S, w9 W1 X: F& S当 WUCKSEL[2] = 1 时,唤醒定时器变为 17 位,WUCKSEL[1] 等效为 WUT[16],即要重载到定时器的最高有效位。 注意: WUTF 第一次置 1 发生在 WUTE 置 1 之后 (WUT+1) 个 ck_wut 周期。禁止在
m4 L) Z6 q8 g, f1 Q* \1 WWUCKSEL[2:0]=011(RTCCLK/2) 时将 WUT[15:0] 设置为 0x0000 。
3 H5 k& K4 ], Y+ r 5.7 RTC 校准寄存器 (RTC_CALIBR)
# \4 I. I3 ?5 }6 K) K. a% |RTC calibration register: q' c2 y1 R0 z. v( h
偏移地址:0x18$ G- ]2 ?3 K# S6 A+ e/ e& j
上电复位值:0x0000 0000 系统复位:不受影响
4 o8 I! |4 W8 z) p2 w& @
& W: N, o2 n. d ], L+ g) {& |8 f' a4 J- O
5.8 RTC 闹钟 A 寄存器 (RTC_ALRMAR)
# U5 M d$ h& {9 s6 V0 n; {0 ~RTC alarm A register+ m3 L6 T9 N m/ m3 G! k) o7 u" B
偏移地址:0x1C
' z& f2 l+ n2 a( T; i& k# q/ V上电复位值:0x0000 0000
+ W) b1 L! J, t6 Y. O9 S( j系统复位:不受影响 ' ^7 `( {2 h( J2 E$ l3 x
k8 B7 _2 P0 b) @7 S2 w7 v
3 O! G) X3 k$ \/ ~ 位 31 MSK4:闹钟 A 日期掩码 (Alarm A date mask)
! S" r; p, A$ l _. ?0 |1 \8 z6 Y; b0:如果日期/日匹配,则闹钟 A 置 1' ?: @' e$ v; S; n4 @# k" S4 M) }
1:在闹钟 A 比较中,日期/日无关 位 30 WDSEL:星期几选择 (Week day selection)
& i7 t9 g/ B% L" J0:DU[3:0] 代表日期的个位
4 n' A. |7 v% G" T3 Q8 H" Y1: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)
) E4 I4 Q# j9 N7 Z: h0:如果小时匹配,则闹钟 A 置 1/ @2 u3 y9 K# o) o. g( s) c' F$ }
1:在闹钟 A 比较中,小时无关 位 22 PM :AM/PM 符号 (AM/PM notation)$ T; M, W+ k9 h4 E! C
0:AM 或 24 小时制# t; K5 a s8 N+ e
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): Q1 [9 C( c" R9 l. g& X6 u9 s) g- \
0:如果分钟匹配,则闹钟 A 置 1
7 g) N6 J6 A, o' F6 i1:在闹钟 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 n6 G) N' Y l8 l# r0:如果秒匹配,则闹钟 A 置 1 1:在闹钟 A 比较中,秒无关 位 6:4 ST[2:0]:秒的十位(BCD 格式)(Second tens in BCD format)。
8 V- z7 {1 C- B) W; ?位 3:0 SU[3:0]:秒的个位(BCD 格式)(Second units in BCD format)。 3 N( ^$ S! h: D9 Z
5.9 RTC 写保护寄存器 (RTC_WPR)
( ?1 b0 B/ K8 B) k% P4 P$ eRTC write protection register
! ]6 J% R: m8 R& `偏移地址:0x248 Y9 T. o1 D$ |# ^
复位值:0x0000 0000
7 V3 g) i( {7 M# y2 f2 s& Y" p& `: h$ w/ U
H# z( f- a9 e0 O* ]' X5 }
5.10 RTC 亚秒寄存器 (RTC_SSR)
& b4 y3 [, R- z6 | A u& F% Y3 W0 RRTC sub second register5 T1 t# P8 }$ ]/ s* _, V" w' o Z8 [7 d
偏移地址:0x28! V' a' L9 l6 j4 M7 G; a
上电复位值:0x0000 0000
5 x w+ ^; I" A9 }- i; k系统复位:当 BYPSHAD = 0 时为 0x0000 0000;当 BYPSHAD = 1 时不受影响。
4 w# i2 h& ?) j5 v5 z! o8 V k f$ u7 J! P% f i
, a& b" P. V! q" E1 u 5.11 RTC 时间戳时间寄存器 (RTC_TSTR)
1 y! L4 v H6 c) x9 _RTC time stamp time register
2 `9 E1 I8 r. e3 v2 m" T" j5 R; X偏移地址:0x307 N0 W/ p2 `' k
上电复位值:0x0000 0000' A0 h- q7 B# X* _/ o0 F
系统复位:不受影响
4 m) Q4 [0 x+ }6 R5 Z/ B0 i: A. l8 W) ]% Z) e
5.12 RTC 备份寄存器 (RTC_BKPxR)
5 {6 S( K1 `. x5 Y/ YRTC backup registers
" A3 l0 \! S1 s! z偏移地址:0x50 到 0x9C
) J, f4 _( p Y- Z+ r* x上电复位值:0x0000 0000( I; I0 x4 g: i7 L) |
系统复位:不受影响 ( k7 P, v5 a. h% m
5 f, o5 ^: y6 U! C
; H6 _3 `! ]3 x5 U2 U& @
1 w# X+ R8 j6 R4 J9 p
|