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

【STM32】RTC详解

[复制链接]
STMCU-管管 发布时间:2020-9-11 11:06
01. RTC概述

实时时钟 (RTC) 是一个独立的 BCD 定时器/计数器。RTC 提供一个日历时钟、两个可编程闹钟中断,以及一个具有中断功能的周期性可编程唤醒标志。RTC 还包含用于管理低功耗模式的自动唤醒单元。

2 I1 O2 w1 ^  ~* G+ K1 w& j, [

两个 32 位寄存器包含二进码十进数格式 (BCD) 的秒、分钟、小时(12 或 24 小时制)、星期几、日期、月份和年份。此外,还可提供二进制格式的亚秒值。


7 C9 s) c( n$ E* E! N6 Z2 v

系统可以自动将月份的天数补偿为 28、29(闰年)、30 和 31 天。并且还可以进行夏令时补偿。

1 `* R2 p! d, t: ^( A; c; C

其它 32 位寄存器还包含可编程的闹钟亚秒、秒、分钟、小时、星期几和日期。此外,还可以使用数字校准功能对晶振精度的偏差进行补偿。


" ?9 q1 a) N9 C

上电复位后,所有 RTC 寄存器都会受到保护,以防止可能的非正常写访问。


  O' f3 ^; c- s. A( W; {

无论器件状态如何(运行模式、低功耗模式或处于复位状态),只要电源电压保持在工作范围内,RTC 便不会停止工作。


8 O! {7 {& K* k  c

02. RTC主要特性
  m' q! W. B, g. E( t9 B- {

RTC 单元的主要特性如下(参见 图 222 : RTC 框图 ):


- ]: C- x" z( O2 K; w● 包含亚秒、秒、分钟、小时(12/24 小时制)、星期几、日期、月份和年份的日历。1 m% ~0 z9 J" g1 `$ U
● 软件可编程的夏令时补偿。
$ M* U: m# n7 _1 Q! R● 两个具有中断功能的可编程闹钟。可通过任意日历字段的组合驱动闹钟。
5 ?8 d& @) Z: N- j● 自动唤醒单元,可周期性地生成标志以触发自动唤醒中断。3 w" A5 u! t, E/ X7 i6 s
● 参考时钟检测:可使用更加精确的第二时钟源(50 Hz 或 60 Hz)来提高日历的精确度。8 X* \, Z1 X0 w$ f2 A1 f/ ^) c' \
● 利用亚秒级移位特性与外部时钟实现精确同步。
! N: R% W" P7 M; S0 \' a5 r● 可屏蔽中断/事件:5 u3 N# Z0 M; ~' W) N0 Y
— 闹钟 A
7 ^9 e' U* ?+ b+ }— 闹钟 B4 f: r4 g7 A  G% b- j5 }% w4 c
— 唤醒中断
/ l' {: x" e) _. w0 P$ U1 V  r' a— 时间戳5 j9 @) C8 V6 U5 J: g1 ?
— 入侵检测
' h' r  i$ T" x( X+ O# e1 Q● 数字校准电路(周期性计数器调整)8 Y% W0 p% ?) K, K; Z4 g; y
— 精度为 5 ppm
2 _# y. ?4 S: `3 n9 P— 精度为 0.95 ppm,在数秒钟的校准窗口中获得% z) X4 a) [' K4 M+ R
● 用于事件保存的时间戳功能(1 个事件)  i& K6 O9 o- a' H5 L  G
● 入侵检测:& e: P% d+ e  V# D! G& s
— 2 个带可配置过滤器和内部上拉的入侵事件) J8 A( B4 c4 n7 x" f  w1 J
● 20 个备份寄存器(80 字节)。发生入侵检测事件时,将复位备份寄存器。

● 复用功能输出 (RTC_OUT),可选择以下两个输出之一:
" A. D% C% [- c* |+ r— RTC_CALIB:512 Hz 或 1 Hz 时钟输出(LSE 频率为 32.768 kHz)。6 H! O, |0 s% q) V7 Q) v) x
可通过将 RTC_CR 寄存器中的 COE[23] 位置 1 来使能此输出。该输出可连接到器件 RTC_AF1 功能。# R! W9 R. x% ~) t: u
— RTC_ALARM(闹钟 A、闹钟 B 或唤醒)。" Y9 W4 h7 N7 `5 H4 j6 W6 E6 S- G+ D
可通过配置 RTC_CR 寄存器的 OSEL[1:0] 位选择此输出。该输出可连接到器件RTC_AF1 功能。1 X2 E2 X9 I; D3 V, d
● RTC 复用功能输入:
- N9 ?7 w; R% S  P& N— RTC_TS:时间戳事件检测。该输入可连接到器件 RTC_AF1 和 RTC_AF2 功能。
8 y* b: w/ e! Y— RTC_TAMP1:TAMPER1 事件检测。该输入可连接到器件 RTC_AF1 和 RTC_AF2功能。1 O0 O. T+ U7 @9 }7 W/ D
— RTC_TAMP2:TAMPER2 事件检测。8 g/ W1 y3 v& z9 f' [/ K! N
— RTC_REFIN:参考时钟输入(通常为市电,50 Hz 或 60 Hz)。
. G5 E7 L; N0 B1 d

1.png
$ C' _: M9 Z6 S5 C3 W4 f

! G  W4 A9 o$ u/ A# y

03. RTC部分功能3.1 时钟和预分频器' g; P2 ?( G8 o* y! N. E% k9 d

RTC 时钟源 (RTCCLK) 通过时钟控制器从 LSE 时钟、LSI 振荡器时钟以及 HSE 时钟三者中选择。有关 RTC 时钟源配置的更多信息,请参见 第 6 节:复位和时钟控制 (RCC)。

可编程的预分频器阶段可生成 1 Hz 的时钟,用于更新日历。为最大程度地降低功耗,预分频器分为 2 个可编程的预分频器(参见 图 222 : RTC 框图 ):
. j% I0 X) j" x; ?0 }● 一个通过 RTC_PRER 寄存器的 PREDIV_A 位配置的 7 位异步预分频器。
! |  ^; s( E! ]● 一个通过 RTC_PRER 寄存器的 PREDIV_S 位配置的 15 位同步预分频器。

注意: 使用两个预分频器时,推荐将异步预分频器配置为较高的值,以最大程度降低功耗。

要使用频率为 32.768 kHz 的 LSE 获得频率为 1 Hz 的内部时钟 (ck_spre),需要将异步预分频系数设置为 128,并将同步预分频系数设置为 256。分频系数的最小值为 1,最大值为 2 ^22 。这对应于约为 4 MHz 的最大输入频率。f ck_apre 可根据以下公式得出:2 [3 J$ G  I9 t/ v! q

2.png

1 Z$ D9 a' v3 v9 X
2 ^- |- A8 D- a8 i' ~

8 t1 g& v. G- I/ q# x2 H  s

3.2 实时时钟和日历
- O$ k: _1 G% v: F

RTC 日历时间和日期寄存器可通过与 PCLK1(APB1 时钟)同步的影子寄存器来访问。这些时间和日期寄存器也可以直接访问,这样可避免等待同步的持续时间。

● RTC_SSR 对应于亚秒$ f6 t% Q; w9 F. G
● RTC_TR 对应于时间
7 F9 d) o! b! p+ |: T. j: ?1 j& g● 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 倍。影子寄存器通过系统复位来复位。


* Y8 g. N$ }6 h+ T7 L

04. RTC低功耗模式和中断
+ v2 j; T0 `1 q8 |

低功耗模式- ?/ z+ Z: N2 a+ O2 G+ n4 l

3.png

- w" T+ Y: c4 n
4 C( `# c( c7 c" ~- \' r

RTC中断

所有 RTC 中断均与 EXTI 控制器相连。

要使能 RTC 闹钟中断,需按照以下顺序操作:

  • 将 EXTI 线 17 配置为中断模式并将其使能,然后选择上升沿有效。

  • 配置 NVIC 中的 RTC_Alarm IRQ 通道并将其使能。

  • 配置 RTC 以生成 RTC 闹钟(闹钟 A 或闹钟 B)。

    ( z4 @# t2 a" e1 }
    : H$ e. B+ @8 n) n& J
    6 }4 r) W( H* ?8 M+ L0 k; ^3 u

要使能 RTC 唤醒中断,需按照以下顺序操作:

  • 将 EXTI 线 22 配置为中断模式并将其使能,然后选择上升沿有效。

  • 配置 NVIC 中的 RTC_WKUP IRQ 通道并将其使能。

  • 配置 RTC 以生成 RTC 唤醒定时器事件。

    ( M) H7 t  @; j' c

    0 O+ k3 g' x( u+ z5 L

      D, ^2 d) ]# G

要使能 RTC 入侵中断,需按照以下顺序操作:

  • 将 EXTI 线 21 配置为中断模式并将其使能,然后选择上升沿有效。

  • 配置 NVIC 中的 TAMP_STAMP IRQ 通道并将其使能。

  • 配置 RTC 以检测 RTC 入侵事件。

    / O; @2 X& Q6 p# R& D5 x) |
    8 Q5 L; q" m0 P9 E) P' h
    0 a8 h# I& U+ `6 L- ?) T

要使能 RTC 时间戳中断,需按照以下顺序操作:

  • 将 EXTI 线 21 配置为中断模式并将其使能,然后选择上升沿有效。

  • 配置 NVIC 中的 TAMP_STAMP IRQ 通道并将其使能。

  • 配置 RTC 以检测 RTC 时间戳事件。
    . U4 [& a, A1 Z- k9 _

      l: x! S  a7 F$ P5 J, e

    * R$ J1 M1 @) ?% B7 P" R2 G9 B

    % ~; A+ X/ e! P
05. RTC寄存器5.1RTC 时间寄存器 (RTC_TR)* @6 [0 @. m0 d) |" a

RTC time register9 D0 F4 F% V. A% c2 ]; X
RTC_TR 是日历时间影子寄存器。只能在初始化模式下对该寄存器执行写操作。& k. h; ]- P5 q8 S6 W! O# Q7 P
偏移地址:0x00( k8 ~: D" D/ c
上电复位值:0x0000 0000) C: o6 @+ Q+ k8 c. V
系统复位:当 BYPSHAD = 0 时为 0x0000 0000;当 BYPSHAD = 1 时不受影响。# ?  R( @$ z1 `7 ^' x; L

5.png
& e6 E1 r' F! t: C9 |. G
8 H7 U5 ^' z2 s- D5 m$ W2 q( {& a: }

5.2 RTC 日期寄存器 (RTC_DR)
9 h% W" U# G+ B8 L! \) _

RTC date register, g/ n0 W8 h: X6 [2 v
RTC_DR 是日历日期影子寄存器。只能在初始化模式下对该寄存器执行写操作。1 ^7 A# H2 H) u1 Z0 g. T% r
偏移地址:0x04
" L( Q' D1 j0 p' V$ c) r上电复位值:0x0000 2101: S3 g  e& X+ j# W

6.png
) d, \: B# ~5 B" c3 ~' @0 f& s

& \" Q2 B. b. z
) v1 q' o* V0 I7 K9 Q, p$ g% g

5.3 RTC 控制寄存器 (RTC_CR)6 k( q( b/ _4 b

RTC control register
* Q+ R. m; x9 f- f6 J/ o偏移地址:0x08- ~$ e2 l- Z1 N% Y0 V6 y7 I2 s8 A
上电复位值:0x0000 0000
' j* H1 ]; A, {系统复位:不受影响: d3 T& P" O  N1 D; ?+ k# \, u$ Z

7.png

: c6 ]- r: g& R6 d% [6 h2 X


5 R# n7 l7 S% t! j# c5 m

位 22:21 OSEL[1:0]:输出选择 (Output selection)) b' L+ P4 r* F' t$ g' |4 L
这些位用于选择要连接到 RTC_ALARM 输出的标志) K# t0 ~5 t4 U) o
00:禁止输出, J+ J* @7 b" A$ ^2 p; k
01:使能闹钟 A 输出8 s8 \( M+ p6 N0 F$ T4 O
10:使能闹钟 B 输出' x6 _$ x7 X0 c4 o& D
11:使能唤醒输出9 j& s2 l( X' `* B
位 20 POL:输出极性 (Output polarity)2 e$ H/ S2 g, n
该位用于配置 RTC_ALARM 输出的极性1 o' g" M/ W# a  C7 ]
0:当 ALRAF/ALRBF/WUTF 置 1 时(取决于 OSEL[1:0]),该引脚为高电平3 R0 S1 r1 u: r6 Y& d( J! `
1:当 ALRAF/ALRBF/WUTF 置 1 时(取决于 OSEL[1:0]),该引脚为低电平, o/ E! {" a" {2 `3 M( v' }
位 19 COSEL:校准输出选择 (Calibration output selection)
8 c. O0 L0 _/ {% y6 V当 COE=1 时,该位可选择 RTC_CALIB 上输出的信号。
' ?2 A$ R0 N7 e, }0:校准输出为 512 Hz
" l8 g4 _- [+ A5 l7 ^1:校准输出为 1 Hz
+ g, ~9 L. B5 x/ [: J在 RTCCLK 为 32.768 kHz 且预分频器为其默认值(PREDIV_A=127 且 PREDIV_S=255)' s: ?1 N1 x# t, y. b/ |6 F
的条件下,这些频率有效。请参见 第 23.3.14 节:校准时钟输出 。% k' U% m% s5 ]3 H6 v) r2 n0 p& S
位 18 BKP:备份 (Backup)) c, R6 {. B, H; A4 d* j4 C+ `
用户可对此位执行写操作以记录是否已对夏令时进行更改。$ s, \) V; L  X  K4 q6 c+ {1 L
位 17 SUB1H:减少 1 小时(冬季时间更改)(Subtract 1 hour (winter time change))
* S) |# q/ M" l2 m, y) X- P当该位在初始化模式以外的模式下置 1 时,如果当前小时不是 0,则日历时间将减少 1 小2 y5 G: v+ e2 H5 N: ?, e5 Q
时。此位始终读为 0。
. |/ c0 M/ o4 f/ U8 A! j% a当前小时为 0 时,将此位置 1 没有任何作用。! s. d' v+ X7 h) A  l" K4 r
0:无作用。
# C% W0 C/ y$ v, _7 A, y8 w1:将当前时间减少 1 小时。这可用于冬季时间更改。8 L9 `3 s" ~  o, h) P& w
位 16 ADD1H:增加 1 小时(夏季时间更改)(Add 1 hour (summer time change))
% h9 Y6 ?1 u" R! j当该位在初始化模式以外的模式下置 1 时,日历时间将增加 1 小时。此位始终读为 0。
# i- {4 s3 Y& q* E! J" |* V0:无作用。
- o! ^7 Z7 O8 p$ B4 m' ^* y6 j/ t1:将当前时间增加 1 小时。这可用于夏季时间更改
- ]# W* U1 M- [( h3 \/ Q位 15 TSIE:时间戳中断使能 (Timestamp interrupt enable), i& u/ V$ a+ _; T8 ?! }
0:禁止时间戳中断
" Y4 g' Z& h0 e/ ~+ n% Q7 j1:使能时间戳中断% T- |; Y/ X6 O5 M& D' H  @5 S- c
位 14 WUTIE:使能唤醒定时器使能 (Wakeup timer interrupt enable)6 c2 I( Y4 |9 i0 J7 |* D
0:禁止唤醒定时器中断) W8 L3 R: X8 V0 ^. ~" ?
1:使能唤醒定时器中断
  x& R2 k5 i6 D1 k; O位 13 ALRBIE: 闹钟 B 中断使能 (Alarm B interrupt enable)
8 x  D' `6 H, p" W0:闹钟 B 中断禁止
" _7 S9 ^/ K3 J2 w. a9 d1:闹钟 B 中断使能: T. F  i5 V( j, k! o
位 12 ALRAIE:闹钟 A 中断使能 (Alarm A interrupt enable)
+ N' }  s9 i! i1 t0:禁止闹钟 A 中断
, O- U' d; _" q- d* v& `1 i9 b9 J5 t1:使能闹钟 A 中断
; p* v6 k- ?" B. Z, }' l位 11 TSE:时间戳使能 (Time stamp enable)
  w/ _) Q2 \. ^% s0:禁止时间戳
) F( Z$ e9 [& _2 _- F1:使能时间戳# q; c  J2 t) f' g
位 10 WUTE:唤醒定时器使能 (Wakeup timer enable)
' p$ H6 E0 }4 f2 U0:禁止唤醒定时器6 Q) v: b: e3 h; ~3 I. r' q
1:使能唤醒定时器

位 9 ALRBE: 闹钟 B 使能 (Alarm B enable)9 W6 y: Q, q% Q- F1 W
0:禁止闹钟 B  [& K5 m# A" C3 u4 c+ Q" ^
1:使能闹钟 B2 w' R* J# _, ~' t5 S6 m* F
位 8 ALRAE :闹钟 A 使能 (Alarm A enable)& W) F0 M( ^& ~& v. P
0:禁止闹钟 A
+ _) k% T7 n2 v: g. i8 Z5 s1:使能闹钟 A
  S/ p+ z; D9 [$ B( X5 Y3 G3 A# y位 7 DCE :粗略数字校准使能 (Coarse digital calibration enable)$ ~& X1 b4 C: \+ u/ A+ O
0:禁止数字校准
! Y9 @* L$ d# i* E# |( ^7 S. L1:使能数字校准
. A% \8 J8 ~  P7 D) [- c8 {PREDIV_A 必须大于或等于 6
; N# j% @4 |) E位 6 FMT:小时格式 (Hour format)
* b# L8 j1 J2 a7 b, a7 }/ Z8 a0:24 小时/天格式! F/ r: x% l( a
1:AM/PM 小时格式1 Z, W, e0 V  L+ R7 w& f: O
位 5 BYPSHAD:旁路影子寄存器 (Bypass the shadow registers)
& c5 w! L$ |% C  ]0:日历值(从 RTC_SSR、RTC_TR 和 RTC_DR 读取时)取自影子寄存器,该影子寄存器' X9 V; j; J5 I) ]7 u
每两个 RTCCLK 周期更新一次。+ A5 O/ q2 l0 C& w8 C) Q
1:日历值(从 RTC_SSR、RTC_TR 和 RTC_DR 读取时)直接取自日历计数器。) y! g, {2 @4 R8 A6 B) [8 @( [( l
注意:如果 APB1 时钟的频率低于 7 倍的 RTCCLK 频率,则必须将 BYPSHAD 置“ 1 ”。+ W7 Q% H* s: n% {. j7 D" L* h
位 4 REFCKON:参考时钟检测使能(50 Hz 或 60 Hz)(Reference clock detection enable (50 or4 C& C& X! l* v- K! N1 [4 G
60 Hz))6 O" x; M, E  Z0 r# t2 \
0:禁止参考时钟检测
  G4 i- y* C7 g7 V" Z1:使能参考时钟检测
5 j  e' h1 {, P, c注意: PREDIV_S 必须为 0x00FF 。8 |' m. r! D) R3 B. o& e
位 3 TSEDGE:时间戳事件有效边沿 (Timestamp event active edge)
( q# O4 }1 d  h4 y7 g* K1 U3 U0:TIMESTAMP 上升沿生成时间戳事件
2 }- \$ t- E# [% I' [( X) q, e1:TIMESTAMP 下降沿生成时间戳事件
: ]7 ]; x: `* n8 P; z3 xTSEDGE 发生更改时,必须复位 TSE 以避免将 TSF 意外置 1
+ ~% d7 y: P. w4 L位 2:0 WUCKSEL[2:0]:唤醒时钟选择 (Wakeup clock selection)  @# f8 H1 l5 M
000:选择 RTC/16 时钟3 M$ j: i4 w$ `: V
001:选择 RTC/8 时钟
; @/ Z' Y3 u6 u  }: [9 K! ^8 {# q2 C010:选择 RTC/4 时钟
5 z" b" o( ~0 F  W011:选择 RTC/2 时钟
* ]8 d8 T7 }* m& b5 ^10x:选择 ck_spre 时钟(通常为 1 Hz)
: x6 Q$ q0 j# ]  c11x:选择 ck_spre 时钟(通常为 1 Hz)并将 WUT 计数器值增加 2 16 (见下面的注释)

温馨提示

WUT = 唤醒单元计数器值。当 WUCKSEL[2:1 = 11] 时, WUT = (0x0000 to 0xFFFF) +0x10000 (增加的值)。8 B* r  M- q/ G
只能在初始化模式下 (RTC_ISR/INITF = 1) 对该寄存器的位 7 、 6 和 4 执行写操作。( V) k! s$ V6 }% F6 W0 f% P+ s
只能在 RTC_CR WUTE 位 = 0 且 RTC_ISR WUTWF 位 = 1 时对该寄存器的位 2 到 0 执行写操作。
$ N6 h+ w8 @3 D/ E, Q建议不要在日历小时递增时更改小时,因为这样做会屏蔽日历小时的增量。ADD1H 和 SUB1H 的更改在下一秒生效。
& W5 X4 C+ S( g此寄存器受写保护。第 576 页的 RTC 寄存器写保护中介绍了写访问的过程。

5 l$ n* R8 X, ]. Q

5.4 RTC 初始化和状态寄存器 (RTC_ISR)
' k/ V; |. J7 k! I

RTC initialization and status register
5 s4 z3 O" e; ?% j% ?: P偏移地址:0x0C2 i( ^  }0 \! Q9 F' J$ ~0 ~
上电复位值:0x0000 0007
7 U4 B/ ^0 J( ~' d3 R$ g2 l系统复位值:不受影响(INIT、INITF 和 RSF 除外,它们在复位时被清零)。( T/ \7 T5 L/ m% q

8.png
$ B% S5 W1 u- D! k. H( Q4 o5 n
2 G; F( j. Z% L, s7 _2 b6 g: m, E

位 31:17 保留

位 16 RECALPF:重新校准挂起标志 (Recalibration pending Flag)7 h; b9 F6 ^: I* W6 [/ X
当软件对 RTC_CALR 寄存器执行写操作时,RECALPF 状态标志将自动置“1”,指示
8 ]8 O) J7 j( oRTC_CALR 寄存器已屏蔽。当采用新的校准设置时,该位恢复为“0”。请参见 动态重校准一节。

位 15 保留,必须保持复位值。

位 14 TAMP2F:TAMPER2 检测标志 (TAMPER2 detection flag)
+ e8 g/ K  x3 w2 u5 P, D5 G/ s在入侵输入 2 上检测到入侵检测事件时,由硬件将此标志置 1。该标志由软件写零清除。

位 13 TAMP1F:入侵检测标志 (Tamper detection flag)
) z. m# x* a, F% B; \当检测到入侵检测事件时,由硬件将此标志置 1。
/ N; p6 c2 w; C7 N0 u' {" [, {该标志由软件写零清除。

位 12 TSOVF:时间戳溢出标志 (Timestamp overflow flag)
7 c! [# W2 A# `9 W当在 TSF 已置 1 的情况下发生时间戳事件时,由硬件将此标志置 1。$ e0 _  {# d' B) t
该标志由软件写零清除。建议仅在 TSF 位清零之后再检查并清零 TSOVF 位。否则,如果时
7 b5 R) \5 ^* z5 `% W: q# V5 s2 H5 a% B间戳事件恰好在清零 TSF 位之前刚刚发生,则溢出事件可能会被漏掉。

位 11 TSF:时间戳标志 (Timestamp flag)
% y! K" O! U; c2 f4 V  A发生时间戳事件时,由硬件将此标志置 1。3 e: ]* Q* r1 ]# A! [6 v
该标志由软件写零清除。

位 10 WUTF:唤醒定时器标志 (Wakeup timer flag)
4 {) z2 C+ H* K' s5 {. S  L当唤醒自动重载计数器计数到 0 时,由硬件将此标志置 1。* F, H/ K! N; i$ J$ A1 d: _0 z
该标志由软件写零清除。
. I& S* I; R4 P" [1 O5 Z8 c" A% m- a软件必须在 WUTF 再次置 1 的 1.5 个 RTCCLK 周期之前将该标志清零。

位 9 ALRBF:闹钟 B 标志 (Alarm B flag)
* n6 H: F, I7 L1 }0 ~5 B当时间/日期寄存器(RTC_TR 和 RTC_DR)与闹钟 B 寄存器 (RTC_ALRMBR) 匹配时,由* z3 _% Y7 m( D. x  ^
硬件将该标志置 1。
6 h( A4 x6 n; P. J5 }# o# k6 X该标志由软件写零清除。

位 8 ALRAF:闹钟 A 标志 (Alarm A flag)
8 [8 a6 O: W1 F/ ?8 b当时间/日期寄存器(RTC_TR 和 RTC_DR)与闹钟 A 寄存器 (RTC_ALRMAR) 匹配时,由
2 y, h; ~' Q# q& p: J% C7 q- w硬件将该标志置 1。
5 l9 n  J8 |" c2 Z& R& J4 O该标志由软件写零清除。

位 7 INIT:初始化模式 (Initialization mode); Z1 N# I9 N( b
0:自由运行模式。5 K6 R  Y9 u" s8 I6 X& r
1:初始化模式,用于编程时间和日期寄存器(RTC_TR 和 RTC_DR)以及预分频器寄存器2 o" ~) ?* `" H; B- Q) n! P$ j
(RTC_PRER)。计数器停止计数,当 INIT 被复位后,计数器从新值开始计数。

位 6 INITF:初始化标志 (Initialization flag)
! S; X5 f. [' j# X9 v. [& {* ?- h# r当此位置 1 时,RTC 处于初始化状态,此时可更新事件、日期和预分频器寄存器。
# V* p$ N0 C' S1 f) A7 {- ?0:不允许更新日历寄存器。# Q* P. b0 a* ]) S
1:允许更新日历寄存器。

位 5 RSF:寄存器同步标志 (Registers synchronization flag), |; E, ^5 M( s, b2 P. e
每次将日历寄存器的值复制到影子寄存器(RTC_SSRx、RTC_TRx 和 RTC_DRx)时,都
; X$ z( D. [* P会由硬件将此位置 1。在初始化模式下、平移操作挂起时 (SHPF=1) 或在旁路影子寄存器模, T9 Q) Y3 F) G2 h
式 (BYPSHAD=1) 下,该位由硬件清零。该位还可由软件清零。
/ b- ?0 x9 l) _4 w: p5 z0:日历影子寄存器尚未同步
& ^. a* W2 u- i% C1:日历影子寄存器已同步

位 4 INITS:初始化状态标志 (Initialization status flag)
' g* z) B$ U6 J4 M0 E1 W当日历年份字段不为 0 时(上电复位状态),由硬件将该位置 1。
9 A: j( L6 A1 q' o* h0:日历尚未初始化4 p/ F( w. E" y4 I8 |3 S
1:日历已经初始化

位 3 SHPF:平移操作挂起 (Shift operation pending)7 n6 @! Z  x# J* ?4 c9 Z- }6 d3 J
0:没有平移操作挂起
2 T7 x8 P. ]- a  N+ f1:某个平移操作挂起; R4 X; Q% h$ _
只要通过对 RTC_SHIFTR 寄存器执行写操作来启动平移操作,此标志便由硬件置 1。执行完% Z- j# S* e  x3 ]
相应的平移操作后,此标志由硬件清零。对 SHPF 执行写入操作不起作用。

位 2 WUTWF:唤醒定时器写标志 (Wakeup timer write flag); d. Y$ Z! o/ H% t, D' z1 z
在 RTC_CR 寄存器中的 WUTE 位置 0 后,当唤醒定时器值可更改时,由硬件将该位置 1。
7 j6 M$ G3 t9 ?' b0:不允许更新唤醒定时器配置" v! b3 T% o, n
1:允许更新唤醒定时器配置

位 1 ALRBWF:闹钟 B 写标志 (Alarm B write flag)
& t: ~8 g" {- }6 Q在 RTC_CR 寄存器中的 ALRBIE 位置 0 之后,当闹钟 B 的值可更改时,由硬件将该位置 1。  w3 m+ |# G6 r5 p5 c) H0 F( U
该位在初始化模式下由硬件清零。9 p) a7 l8 c% A' }) Z0 z
0:不允许更新闹钟 B
- ~6 U6 J( h/ C, V4 T$ }1:允许更新闹钟 B

位 0 ALRAWF:闹钟 A 写标志 (Alarm A write flag)
# \9 h# Z2 E- Y/ K在 RTC_CR 寄存器中的 ALRAE 位置 0 后,当闹钟 A 的值可更改时,由硬件将该位置 1。
) Y; ~9 W4 Y+ J" B& H该位在初始化模式下由硬件清零。
; @; Z3 l2 O5 A% `8 ]: i$ w$ F0:不允许更新闹钟 A
! j+ ?# F: K, R: I; E; F$ g/ O! A1:允许更新闹钟 A


# j# Q  j3 L. \

5.5 RTC 预分频器寄存器 (RTC_PRER)
5 Q7 @2 B* `; z6 f: y. R

RTC prescaler register
0 j. |& C) h7 H& d) o偏移地址:0x10
( ~2 p7 \: |- c% y上电复位值:0x007F 00FF


' M. j. ^- X' B1 n3 y: X" O系统复位:不受影响1 p$ R5 C1 J$ t, _8 o

9.png

' c, `, C% {* ?2 N7 t
: o- x3 y& ]1 g9 ?3 W8 h

5.6 RTC 唤醒定时器寄存器 (RTC_WUTR)
" \- q2 o! S) V6 J/ l

RTC wakeup timer register" }* e9 x% T6 j# V
偏移地址:0x14
  r) ^% w4 V$ O! K0 a# R上电复位值:0x0000 FFFF9 E7 H$ h" V. |5 r4 f/ I
系统复位:不受影响
# a9 D% q; _* j3 h: \

10.png
" a6 g9 T" q7 G! |$ d  i) r. J

2 l6 ?5 k% b2 R; F5 i- F3 m

位 31:16 保留

位 15:0 WUT[15:0]:唤醒自动重载值位 (Wakeup auto-reload value bit)  ]* C/ H0 }  C7 m% h6 v
当使能唤醒定时器时(WUTE 置 1),每 (WUT[15:0] + 1) 个 ck_wut 周期将 WUTF 标志置 1一次。ck_wut 周期通过 RTC_CR 寄存器的 WUCKSEL[2:0] 位进行选择。
! p  n& S  B/ \% z7 l当 WUCKSEL[2] = 1 时,唤醒定时器变为 17 位,WUCKSEL[1] 等效为 WUT[16],即要重载到定时器的最高有效位。

注意: WUTF 第一次置 1 发生在 WUTE 置 1 之后 (WUT+1) 个 ck_wut 周期。禁止在1 J- v9 e( j+ ?9 N7 e
WUCKSEL[2:0]=011(RTCCLK/2) 时将 WUT[15:0] 设置为 0x0000 。

$ g% U* I+ H, y5 d

5.7 RTC 校准寄存器 (RTC_CALIBR)
% |4 B/ Z/ f+ |) A( ^3 @9 F

RTC calibration register
& o7 Q0 z8 z% {  n偏移地址:0x187 @% q8 `! ^4 i, {4 m) Q8 `
上电复位值:0x0000 0000

系统复位:不受影响


* o9 t% q$ m5 h/ Z

11.png
/ q" ^, L' g$ j2 [* f; K$ d5 J2 G. z/ a
' B% J0 G0 u% ^

5.8 RTC 闹钟 A 寄存器 (RTC_ALRMAR)& j: J) Q+ q2 [% J1 R% ^6 m: ?

RTC alarm A register$ b, ~1 ~4 l% y' V- B5 Q, j6 q
偏移地址:0x1C5 M/ R) u4 J0 A9 W
上电复位值:0x0000 00003 P5 q6 {; [4 C8 O& Z' ?6 {5 _
系统复位:不受影响


3 T" ?3 h, E7 |6 |* |

12.png

- Q3 C( V3 [0 H2 L8 b
. v' J6 ~$ ?2 f$ a7 x

位 31 MSK4:闹钟 A 日期掩码 (Alarm A date mask)% T7 x& k) w+ a) F; \; c6 U
0:如果日期/日匹配,则闹钟 A 置 1* I% f2 s% s: K1 T
1:在闹钟 A 比较中,日期/日无关

位 30 WDSEL:星期几选择 (Week day selection)
1 H1 j+ p' z; }, n  q0:DU[3:0] 代表日期的个位, `. s9 m" I4 E
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)
3 C- ~+ G+ g' K0 y: V1 h* C' T0:如果小时匹配,则闹钟 A 置 1
/ O# \3 b6 n6 C6 A/ h+ _1:在闹钟 A 比较中,小时无关

位 22 PM :AM/PM 符号 (AM/PM notation)
3 o0 |  ^# a. V0:AM 或 24 小时制0 r3 j( K5 c1 y: B* j6 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)
$ N1 M: J4 ^" z% \- P0 S" H0:如果分钟匹配,则闹钟 A 置 1
( d4 E/ w0 P" Z. G+ k8 V1:在闹钟 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)! ~& Z4 R& p- H9 i  l
0:如果秒匹配,则闹钟 A 置 1

1:在闹钟 A 比较中,秒无关

位 6:4 ST[2:0]:秒的十位(BCD 格式)(Second tens in BCD format)。: d9 x6 {3 U( ?& s' d$ W% \
位 3:0 SU[3:0]:秒的个位(BCD 格式)(Second units in BCD format)。


5 i2 N' f% o8 h1 h( w: V

5.9 RTC 写保护寄存器 (RTC_WPR)& E- K, i. n% k% Y% x

RTC write protection register: P: n5 i; J2 g
偏移地址:0x24
1 v+ p' z; u+ @7 R复位值:0x0000 0000


4 }% F+ G& A5 ]% L6 C: t

13.png
, L$ d- J0 O" y- \

, W/ J- i$ C3 d  |6 S

5.10 RTC 亚秒寄存器 (RTC_SSR), a/ v6 \, J1 [' n( C

RTC sub second register* U( x4 Z/ E/ w" |
偏移地址:0x28
' p8 J2 g. o# N7 l$ ?上电复位值:0x0000 0000
5 I0 x$ Q0 z7 O" {$ ~系统复位:当 BYPSHAD = 0 时为 0x0000 0000;当 BYPSHAD = 1 时不受影响。
7 s, V! F! @1 }0 l. p1 R+ |

14.png
0 E: m1 X9 g. ]% K+ V% \

, _, S3 i5 j- B$ v

5.11 RTC 时间戳时间寄存器 (RTC_TSTR)
3 \; e  l' k+ [- L

RTC time stamp time register
1 k% S7 |0 m7 _4 \/ r偏移地址:0x302 q+ _) D8 Z( v
上电复位值:0x0000 0000
' I; Y( w1 E6 i, Z; m系统复位:不受影响, A4 T. r/ \( n. D7 C- @; ?- _- ~

15.png
2 w3 D' R( _! G5 O

5.12 RTC 备份寄存器 (RTC_BKPxR)
+ G" t6 Z0 Q% Q' J

RTC backup registers
0 P0 p2 D$ {- c( x偏移地址:0x50 到 0x9C
2 X7 f4 ?$ Q/ p! _$ I上电复位值:0x0000 0000$ F7 e8 p' a* r
系统复位:不受影响


4 }" l1 _% G1 I) J  l# ^6 @0 t1 o' W9 W

16.png

+ J; l! q; A* O* B

4 j9 g2 j. C3 L5 J3 V2 Y7 z
% J( c; x* ^! L! a, O$ {
4.png
收藏 1 评论0 发布时间:2020-9-11 11:06

举报

0个回答

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版