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

【STM32】RTC详解

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

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


$ v$ b; q# ^1 v( i- K  @6 Z' e

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

8 o' n5 C" j9 ~0 s( w6 h

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

2 Z$ D* l1 w7 m0 T

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


! I# V* F9 {. K1 ^" g7 D5 P( s: U

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


  x) O1 F: U9 j6 k0 u- x5 h2 T

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


3 M9 O9 e# n! ?/ c. x

02. RTC主要特性
: Z$ p' g4 T1 c/ d5 W) C

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


) Q/ O  t7 e+ u0 N4 y" e8 a# w● 包含亚秒、秒、分钟、小时(12/24 小时制)、星期几、日期、月份和年份的日历。
- _9 u2 x, ?3 B0 p) N8 ]* K9 ^● 软件可编程的夏令时补偿。
2 m; [/ A6 W, F● 两个具有中断功能的可编程闹钟。可通过任意日历字段的组合驱动闹钟。
, B2 X6 J$ r, i" |4 n5 Y! q1 U● 自动唤醒单元,可周期性地生成标志以触发自动唤醒中断。
. W5 b: `' F- f2 c8 R● 参考时钟检测:可使用更加精确的第二时钟源(50 Hz 或 60 Hz)来提高日历的精确度。0 i% ^1 i9 I  [5 o0 G' P
● 利用亚秒级移位特性与外部时钟实现精确同步。, @& e2 V1 m. r) O$ {
● 可屏蔽中断/事件:
$ D3 ]" E( c# E" [— 闹钟 A6 D$ W/ |$ h( x) K3 I* Q
— 闹钟 B
& }. A1 B! p/ s1 h! O- T2 P— 唤醒中断
' J! u5 {0 I3 L$ J: K+ Z" p( @— 时间戳
! e  W* c: i9 P* k2 l6 _— 入侵检测& m/ }9 [7 v3 K& k
● 数字校准电路(周期性计数器调整)4 \# Y% s/ [! x- e
— 精度为 5 ppm6 c1 [% \9 j$ P6 ?! a6 w. `) Z$ k
— 精度为 0.95 ppm,在数秒钟的校准窗口中获得$ m; L1 c9 `) K0 B- V
● 用于事件保存的时间戳功能(1 个事件)
/ |& u! Q2 j* }- w5 V● 入侵检测:- G* _& a* R# \9 P  g8 }
— 2 个带可配置过滤器和内部上拉的入侵事件
: R. {6 C+ Y' o3 v● 20 个备份寄存器(80 字节)。发生入侵检测事件时,将复位备份寄存器。

● 复用功能输出 (RTC_OUT),可选择以下两个输出之一:9 Q: H3 m5 k4 B
— RTC_CALIB:512 Hz 或 1 Hz 时钟输出(LSE 频率为 32.768 kHz)。$ Y+ P3 w( n8 r4 F" o, s3 x
可通过将 RTC_CR 寄存器中的 COE[23] 位置 1 来使能此输出。该输出可连接到器件 RTC_AF1 功能。/ D- `: A$ @2 e9 B9 |9 ~8 ?* x
— RTC_ALARM(闹钟 A、闹钟 B 或唤醒)。: y: f' x0 F$ o' g/ l3 V
可通过配置 RTC_CR 寄存器的 OSEL[1:0] 位选择此输出。该输出可连接到器件RTC_AF1 功能。
9 Q6 Y4 G4 J0 I( {/ ]9 T6 p4 [● RTC 复用功能输入:+ Y7 a; K5 k3 J& _' i
— RTC_TS:时间戳事件检测。该输入可连接到器件 RTC_AF1 和 RTC_AF2 功能。& J( ^  V* I6 _2 |; E$ f
— RTC_TAMP1:TAMPER1 事件检测。该输入可连接到器件 RTC_AF1 和 RTC_AF2功能。
3 B( Y/ ]! @) ]6 g— RTC_TAMP2:TAMPER2 事件检测。% ]" }* u' v" x
— RTC_REFIN:参考时钟输入(通常为市电,50 Hz 或 60 Hz)。9 B  X& ]1 i; ]

1.png
6 F) B7 |4 E1 c( R

9 n' ~' _3 c4 |- l% s9 z- T

03. RTC部分功能3.1 时钟和预分频器
6 I4 j0 U# k$ F* q, e

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

可编程的预分频器阶段可生成 1 Hz 的时钟,用于更新日历。为最大程度地降低功耗,预分频器分为 2 个可编程的预分频器(参见 图 222 : RTC 框图 ):
: ~- G; j7 D( s0 k● 一个通过 RTC_PRER 寄存器的 PREDIV_A 位配置的 7 位异步预分频器。
2 V9 K: e, k& L2 ?4 X2 Q● 一个通过 RTC_PRER 寄存器的 PREDIV_S 位配置的 15 位同步预分频器。

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

要使用频率为 32.768 kHz 的 LSE 获得频率为 1 Hz 的内部时钟 (ck_spre),需要将异步预分频系数设置为 128,并将同步预分频系数设置为 256。分频系数的最小值为 1,最大值为 2 ^22 。这对应于约为 4 MHz 的最大输入频率。f ck_apre 可根据以下公式得出:
" S8 v& ~5 ]' s

2.png
" G, s4 @) t! n0 P
5 j; g* \* B9 Q2 e/ _! c& @/ T6 D' U8 ^

" R; l( S" o" Z; \

3.2 实时时钟和日历
# ?. @8 H$ z  T/ @$ F

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

● RTC_SSR 对应于亚秒
$ N. [- A" d7 ~" d; u● RTC_TR 对应于时间& i$ j" k& u5 E9 c! \* r* i
● 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 倍。影子寄存器通过系统复位来复位。

$ K. G# T& |, z# P; w  q' _

04. RTC低功耗模式和中断
& U' a" V3 E3 d  ~# \% T

低功耗模式
7 s# {/ G. N' n$ d' W

3.png

8 j. C+ D; N0 @! T% }/ D. A3 P0 {$ J  n& ^3 Z" R- I

RTC中断

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

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

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

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

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

    ! ]3 M9 M9 \* s+ {( h; a) M' \
    % m/ b" s, ]! F1 ~, v: y

    ' h& j+ G; l( [( Q0 r  Z; Z# o

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

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

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

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

    + d" L4 P  [0 {/ q: M" {& W) r

    ) r/ r$ t9 ~% e0 v7 {
      W9 Z7 D2 {+ h5 ]- H

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

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

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

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

    + \, b5 U/ H9 q- W; D
    2 {" J3 d0 Z- f; J. l* k1 H* @& X
    8 t8 g0 S! u; `

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

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

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

  • 配置 RTC 以检测 RTC 时间戳事件。8 F) R. f6 s2 P! L% A9 }1 k% H

    0 E/ ]7 h7 F$ O0 j: g

    2 h* Y3 X* g, P& L0 h8 [
    4 O! ]% \+ r+ d/ Y1 v: O
05. RTC寄存器5.1RTC 时间寄存器 (RTC_TR)
' {& a) l# w( M

RTC time register, [, m7 `' [3 o9 y& o9 q1 n0 ?0 s) b
RTC_TR 是日历时间影子寄存器。只能在初始化模式下对该寄存器执行写操作。
" x& R- ]( q" q  u6 p- G偏移地址:0x00% A; Y( H# s* F+ R* s
上电复位值:0x0000 0000
9 D) Y9 e( Z9 F$ j( j$ T系统复位:当 BYPSHAD = 0 时为 0x0000 0000;当 BYPSHAD = 1 时不受影响。
; X6 \3 @% L8 R1 b

5.png
9 r. F% }% V2 m& F9 Q
. m5 z+ y5 y, a* K

5.2 RTC 日期寄存器 (RTC_DR)
+ D& \- p' a6 Y2 x% r

RTC date register
$ m* ?% e, {# \4 ^1 pRTC_DR 是日历日期影子寄存器。只能在初始化模式下对该寄存器执行写操作。, E9 y! p" k; {  c+ v7 j# d* E, H+ B
偏移地址:0x04; E+ d; u# y* Q/ e2 C- N
上电复位值:0x0000 21013 k0 d& y; z9 _6 J

6.png
7 _3 @7 o" s( m( d
& k* q+ r  L( |  g7 h7 x

* r% i0 s( Q$ T# O

5.3 RTC 控制寄存器 (RTC_CR)
5 c/ [0 A( t4 g. o: E2 [8 k

RTC control register
/ h3 b$ d) c4 V; z; X* A- O) F偏移地址:0x08
- t# Y& X) ?1 m( R5 L# S上电复位值:0x0000 0000
% Q+ s$ W# D, t: ~系统复位:不受影响! X0 @1 Y1 `- A$ E7 P# m

7.png
8 F$ F. v1 V) {, N' W1 |2 \


' n" Y( S4 ~) d

位 22:21 OSEL[1:0]:输出选择 (Output selection)
) I8 S( e; \1 D6 v; r这些位用于选择要连接到 RTC_ALARM 输出的标志$ G6 W7 F9 p" r7 p3 s
00:禁止输出% d1 _' m) K* L; d; Y  l, U
01:使能闹钟 A 输出% m! `$ f% ?+ M' R
10:使能闹钟 B 输出( k8 `; D) Y9 m
11:使能唤醒输出# L) B; c! D5 N& J2 F% n6 X3 P
位 20 POL:输出极性 (Output polarity)
4 A7 ~' W, n2 z8 l1 I0 b: [; I; B该位用于配置 RTC_ALARM 输出的极性9 x- w, M6 G  n  e! C: G5 G
0:当 ALRAF/ALRBF/WUTF 置 1 时(取决于 OSEL[1:0]),该引脚为高电平: x  w5 P5 ~  D8 \
1:当 ALRAF/ALRBF/WUTF 置 1 时(取决于 OSEL[1:0]),该引脚为低电平
5 Y! V8 E3 r- n* u/ y$ }位 19 COSEL:校准输出选择 (Calibration output selection)) i4 |  _  L! x, N+ Y6 g
当 COE=1 时,该位可选择 RTC_CALIB 上输出的信号。
+ M# D& y3 s# X% P/ ^1 X% Q0:校准输出为 512 Hz, H$ `1 u% ]# p7 x3 r
1:校准输出为 1 Hz
8 y4 Z( y' M8 e1 N9 R* e% c. X在 RTCCLK 为 32.768 kHz 且预分频器为其默认值(PREDIV_A=127 且 PREDIV_S=255)- n; m- p! Q6 m( ?% e& O
的条件下,这些频率有效。请参见 第 23.3.14 节:校准时钟输出 。" Y3 p2 }# \5 s9 `2 X) v
位 18 BKP:备份 (Backup)
, c4 ?* c3 V, Y  Y. ]2 X用户可对此位执行写操作以记录是否已对夏令时进行更改。
# e  M2 r' a- X7 B+ s1 {$ ]5 d位 17 SUB1H:减少 1 小时(冬季时间更改)(Subtract 1 hour (winter time change))# T( Q7 T0 z, A2 M* J
当该位在初始化模式以外的模式下置 1 时,如果当前小时不是 0,则日历时间将减少 1 小
# Y3 e3 ]  s7 d* `6 I* t; b时。此位始终读为 0。7 h6 P- f. [( d/ A
当前小时为 0 时,将此位置 1 没有任何作用。- E: `( ]/ }+ b2 y. n/ v
0:无作用。/ l, R4 R/ Q5 f  T
1:将当前时间减少 1 小时。这可用于冬季时间更改。
; t* r! b9 [0 p4 f  S: _4 r" n位 16 ADD1H:增加 1 小时(夏季时间更改)(Add 1 hour (summer time change))
- p  C  r3 j& r5 D/ n+ S当该位在初始化模式以外的模式下置 1 时,日历时间将增加 1 小时。此位始终读为 0。# s- G. g9 u! ]0 s3 c& X
0:无作用。  X4 L1 m3 k' Z" l" u/ d7 g# _. f9 ~
1:将当前时间增加 1 小时。这可用于夏季时间更改
  }& ]2 F- S3 i2 V! Y0 E位 15 TSIE:时间戳中断使能 (Timestamp interrupt enable)
! Q% Y- f) T! i0 t* N6 |$ N0 q* F6 V0:禁止时间戳中断
: K% h/ S8 W" G6 I6 ^7 Y' p- }1:使能时间戳中断
( B0 l! E1 Z% w1 D4 l8 B位 14 WUTIE:使能唤醒定时器使能 (Wakeup timer interrupt enable)
" Q4 O/ I" ?7 F7 C  H! T0:禁止唤醒定时器中断' X- q2 M. B1 [  Z: |8 i+ R8 H
1:使能唤醒定时器中断
9 E+ ]: ~* G0 q' j+ n2 @位 13 ALRBIE: 闹钟 B 中断使能 (Alarm B interrupt enable)
1 R3 }6 z: o9 D6 H: T* C  v/ f# L0:闹钟 B 中断禁止, W' c( f+ L. R! e7 t; P
1:闹钟 B 中断使能
8 Z  Q6 `7 W6 e* C5 |位 12 ALRAIE:闹钟 A 中断使能 (Alarm A interrupt enable)9 @/ E, I/ k3 G/ c. |3 ~
0:禁止闹钟 A 中断1 y( [# r) B1 `
1:使能闹钟 A 中断5 C% t& r7 ]: `0 f  ^
位 11 TSE:时间戳使能 (Time stamp enable)
( k5 g! N9 C# p2 J0 R0:禁止时间戳6 r4 U1 t: u" v& S1 `0 L) ^) l
1:使能时间戳; h6 V0 g0 z7 G% u7 G( U. g& l
位 10 WUTE:唤醒定时器使能 (Wakeup timer enable)
: @/ E, Z' i. c5 Z6 j& ~) y! H0:禁止唤醒定时器
' s/ F1 e% d' W! T6 b6 U1:使能唤醒定时器

位 9 ALRBE: 闹钟 B 使能 (Alarm B enable)
/ ~* d6 a8 k+ x6 n" d3 ~* ]0:禁止闹钟 B* u" C) d  {5 }3 Z4 K" v5 y
1:使能闹钟 B
: J+ w8 D- }6 Q3 [# W, @, M位 8 ALRAE :闹钟 A 使能 (Alarm A enable). b% b0 ~4 a( g- f5 R1 x9 v. `- \
0:禁止闹钟 A
# g6 |+ p1 b7 p5 _' g( a7 ]- o1:使能闹钟 A
6 W- k9 [% E( g9 m% T+ ]! r. c. g. X位 7 DCE :粗略数字校准使能 (Coarse digital calibration enable)
. `+ x' F% d. X/ g$ B1 H0:禁止数字校准4 O& i" g# @5 w
1:使能数字校准% A0 w: Z/ d1 Y% \% n
PREDIV_A 必须大于或等于 6
- S- S9 p7 K+ h. w位 6 FMT:小时格式 (Hour format)
# s, ]* N7 o% r; l; B0:24 小时/天格式# l" c1 K  \# _- i7 ~
1:AM/PM 小时格式$ s2 w% _' Y: z# i9 j$ O
位 5 BYPSHAD:旁路影子寄存器 (Bypass the shadow registers)
- r: }/ C7 G5 ~0:日历值(从 RTC_SSR、RTC_TR 和 RTC_DR 读取时)取自影子寄存器,该影子寄存器
4 l1 S2 U8 O$ |) l1 C3 h4 V每两个 RTCCLK 周期更新一次。5 U( \# u6 H' p2 I0 {( m+ D9 {
1:日历值(从 RTC_SSR、RTC_TR 和 RTC_DR 读取时)直接取自日历计数器。
  u. a" U( U1 `! F7 }0 K注意:如果 APB1 时钟的频率低于 7 倍的 RTCCLK 频率,则必须将 BYPSHAD 置“ 1 ”。
) r% u" ?3 N9 Z- u# X% L位 4 REFCKON:参考时钟检测使能(50 Hz 或 60 Hz)(Reference clock detection enable (50 or
* \5 u3 P  o; a9 g$ `) R60 Hz))
  _" I' Y  y7 i. |1 e7 c0:禁止参考时钟检测
0 K5 U; V6 N4 Y/ H3 E4 l1:使能参考时钟检测
: Q( z9 k# h2 A* F  m- }注意: PREDIV_S 必须为 0x00FF 。
1 b9 s" F5 j& ^3 w, j* D' o位 3 TSEDGE:时间戳事件有效边沿 (Timestamp event active edge)
+ }9 u- ~: k7 o/ X7 T0:TIMESTAMP 上升沿生成时间戳事件
1 q7 S) E; l) k' q1:TIMESTAMP 下降沿生成时间戳事件6 L* C* L2 y; e! U
TSEDGE 发生更改时,必须复位 TSE 以避免将 TSF 意外置 1
4 Y2 k9 P. A4 r! m位 2:0 WUCKSEL[2:0]:唤醒时钟选择 (Wakeup clock selection)
# ?6 P2 g$ z: t* o: ~) h' \000:选择 RTC/16 时钟
& x* F9 S; P# E7 r- U6 [6 X/ ^001:选择 RTC/8 时钟
' a& t# {! r! K& X/ r010:选择 RTC/4 时钟
4 t- c  Z( n! W$ ~" c0 P4 Q& K7 h011:选择 RTC/2 时钟# {5 q$ O1 y/ d: s, r) R! A
10x:选择 ck_spre 时钟(通常为 1 Hz)
2 `4 F; s! H1 N2 V: x11x:选择 ck_spre 时钟(通常为 1 Hz)并将 WUT 计数器值增加 2 16 (见下面的注释)

温馨提示

WUT = 唤醒单元计数器值。当 WUCKSEL[2:1 = 11] 时, WUT = (0x0000 to 0xFFFF) +0x10000 (增加的值)。7 r8 R6 m9 d7 O0 D) M* P! R
只能在初始化模式下 (RTC_ISR/INITF = 1) 对该寄存器的位 7 、 6 和 4 执行写操作。( t! Q) F0 C6 q; ?* f9 }7 H
只能在 RTC_CR WUTE 位 = 0 且 RTC_ISR WUTWF 位 = 1 时对该寄存器的位 2 到 0 执行写操作。
& z! k! R) a/ k$ R$ z" m& d% G2 t$ B建议不要在日历小时递增时更改小时,因为这样做会屏蔽日历小时的增量。ADD1H 和 SUB1H 的更改在下一秒生效。4 l$ z: A/ D4 f* e  d
此寄存器受写保护。第 576 页的 RTC 寄存器写保护中介绍了写访问的过程。


8 H  G1 S9 B3 E! G/ |9 b* l8 v

5.4 RTC 初始化和状态寄存器 (RTC_ISR)- u/ l! M+ Y% G- Y% S

RTC initialization and status register  V9 F1 \3 \0 ~2 {
偏移地址:0x0C4 B) D- F. W: F! B/ i
上电复位值:0x0000 00074 W9 I4 b$ G( L; E* S" E. \
系统复位值:不受影响(INIT、INITF 和 RSF 除外,它们在复位时被清零)。
7 \; E, B0 }3 k) p

8.png

  ~" Y( V2 l3 W- Q: O0 R) q* \1 J

位 31:17 保留

位 16 RECALPF:重新校准挂起标志 (Recalibration pending Flag)  s# c( K8 l# T1 z2 J- F
当软件对 RTC_CALR 寄存器执行写操作时,RECALPF 状态标志将自动置“1”,指示
2 b$ U2 i' c. q/ f" BRTC_CALR 寄存器已屏蔽。当采用新的校准设置时,该位恢复为“0”。请参见 动态重校准一节。

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

位 14 TAMP2F:TAMPER2 检测标志 (TAMPER2 detection flag)! I) A( ^1 i4 v7 V5 t
在入侵输入 2 上检测到入侵检测事件时,由硬件将此标志置 1。该标志由软件写零清除。

位 13 TAMP1F:入侵检测标志 (Tamper detection flag)
, |* c4 o; G8 I8 [( s. U  b当检测到入侵检测事件时,由硬件将此标志置 1。
8 j5 B) u4 a3 H0 J& N该标志由软件写零清除。

位 12 TSOVF:时间戳溢出标志 (Timestamp overflow flag)8 c3 C4 F. V  h
当在 TSF 已置 1 的情况下发生时间戳事件时,由硬件将此标志置 1。6 T" n' m( }( G
该标志由软件写零清除。建议仅在 TSF 位清零之后再检查并清零 TSOVF 位。否则,如果时" |2 {( V8 p- P; {! R
间戳事件恰好在清零 TSF 位之前刚刚发生,则溢出事件可能会被漏掉。

位 11 TSF:时间戳标志 (Timestamp flag)
+ q* p+ Q- k8 O# U  p5 Q发生时间戳事件时,由硬件将此标志置 1。- G( @* }7 e; ?* M! r8 j# s
该标志由软件写零清除。

位 10 WUTF:唤醒定时器标志 (Wakeup timer flag)) {1 G& G* u+ y5 I  P) b) N* _
当唤醒自动重载计数器计数到 0 时,由硬件将此标志置 1。* L6 U! J$ r# y# u
该标志由软件写零清除。
- p- U# t$ ?7 p7 Y0 U9 W. e6 G软件必须在 WUTF 再次置 1 的 1.5 个 RTCCLK 周期之前将该标志清零。

位 9 ALRBF:闹钟 B 标志 (Alarm B flag)
4 r& c/ }3 f- P) l# Y, c当时间/日期寄存器(RTC_TR 和 RTC_DR)与闹钟 B 寄存器 (RTC_ALRMBR) 匹配时,由7 j) K6 d+ _; q* ^8 G) p# S
硬件将该标志置 1。; c: x# U& v6 u: {
该标志由软件写零清除。

位 8 ALRAF:闹钟 A 标志 (Alarm A flag)* G7 W$ s- Q1 s, _
当时间/日期寄存器(RTC_TR 和 RTC_DR)与闹钟 A 寄存器 (RTC_ALRMAR) 匹配时,由
2 Q3 K& x3 @1 F. y9 K2 ^. J硬件将该标志置 1。5 b1 q" i' L# G; \
该标志由软件写零清除。

位 7 INIT:初始化模式 (Initialization mode)# X" _* P( Q* V0 g7 l! j
0:自由运行模式。) v8 k4 o* A! d) A
1:初始化模式,用于编程时间和日期寄存器(RTC_TR 和 RTC_DR)以及预分频器寄存器
7 E% i7 t0 p  T& M- D9 ^! q7 O4 e% _8 `(RTC_PRER)。计数器停止计数,当 INIT 被复位后,计数器从新值开始计数。

位 6 INITF:初始化标志 (Initialization flag). n0 X$ r, w: R( v) n5 o
当此位置 1 时,RTC 处于初始化状态,此时可更新事件、日期和预分频器寄存器。: G) K, a+ K  }/ T) Z
0:不允许更新日历寄存器。" }2 `. O# k9 G  x% V
1:允许更新日历寄存器。

位 5 RSF:寄存器同步标志 (Registers synchronization flag)
6 k( r- ?9 t. x" T( ^( n每次将日历寄存器的值复制到影子寄存器(RTC_SSRx、RTC_TRx 和 RTC_DRx)时,都1 i5 O: I  l7 K4 ^: x! E
会由硬件将此位置 1。在初始化模式下、平移操作挂起时 (SHPF=1) 或在旁路影子寄存器模
5 y5 S- E9 B' |/ S* n/ n; g+ C: Z式 (BYPSHAD=1) 下,该位由硬件清零。该位还可由软件清零。8 J0 z; m3 D; Y6 B
0:日历影子寄存器尚未同步
# d0 M; p! f2 e# q/ h- B1 t. S' V1:日历影子寄存器已同步

位 4 INITS:初始化状态标志 (Initialization status flag)( h/ ]7 z5 u/ V4 n9 W) C1 q) y
当日历年份字段不为 0 时(上电复位状态),由硬件将该位置 1。
5 l/ E3 p) E# ~; O, B0:日历尚未初始化
/ r, s+ q+ Y& f; ]1:日历已经初始化

位 3 SHPF:平移操作挂起 (Shift operation pending)% g/ ~! ]6 i' p9 N/ y
0:没有平移操作挂起
8 {; s: N/ t. E( z# I8 U% z1:某个平移操作挂起
$ i, f' h- b: b只要通过对 RTC_SHIFTR 寄存器执行写操作来启动平移操作,此标志便由硬件置 1。执行完5 k' ?$ {4 b- x. I0 K# w0 m6 R
相应的平移操作后,此标志由硬件清零。对 SHPF 执行写入操作不起作用。

位 2 WUTWF:唤醒定时器写标志 (Wakeup timer write flag)1 m2 F8 ~/ w2 ?1 u# x
在 RTC_CR 寄存器中的 WUTE 位置 0 后,当唤醒定时器值可更改时,由硬件将该位置 1。, d! Y' ]# {) c! o6 h1 o0 N
0:不允许更新唤醒定时器配置2 v1 j& _3 y# l7 k
1:允许更新唤醒定时器配置

位 1 ALRBWF:闹钟 B 写标志 (Alarm B write flag)% M+ I2 s4 t) |# Y# v. s! c& q
在 RTC_CR 寄存器中的 ALRBIE 位置 0 之后,当闹钟 B 的值可更改时,由硬件将该位置 1。* `* p. @/ A- i; F4 E
该位在初始化模式下由硬件清零。
9 |6 r! H+ \9 D& i/ l9 G5 @( Y7 w0:不允许更新闹钟 B
0 M8 L6 ^5 w; r* I  l1:允许更新闹钟 B

位 0 ALRAWF:闹钟 A 写标志 (Alarm A write flag)  ~7 C4 d  d* a5 ^. C" c& a& C
在 RTC_CR 寄存器中的 ALRAE 位置 0 后,当闹钟 A 的值可更改时,由硬件将该位置 1。$ a! i& J7 I4 o1 }6 q
该位在初始化模式下由硬件清零。
: B+ d+ R' ]# g( N, S0:不允许更新闹钟 A
* |  n) K- h* S: |& W0 q2 g8 R1:允许更新闹钟 A

3 p; G1 B: c6 r* a: D

5.5 RTC 预分频器寄存器 (RTC_PRER)
" C1 \; V. I6 D% X, |

RTC prescaler register( G9 S! p0 O: \. p- U  n
偏移地址:0x106 ?) x; V1 E( n1 x5 P$ S
上电复位值:0x007F 00FF


& b6 D3 [3 t5 M) p: c系统复位:不受影响
" W! q# V# R8 E+ C4 ^$ H4 [- O& t" s

9.png
6 f1 D6 E$ j! t. ~
) E+ b& K% w) ~

5.6 RTC 唤醒定时器寄存器 (RTC_WUTR)4 E3 E5 m4 [" D8 q

RTC wakeup timer register, M9 y: Q  c0 l' u4 s' ^5 Z  z& F
偏移地址:0x14
) I+ z' L( s1 {上电复位值:0x0000 FFFF; x$ Q5 k. y( W9 ^8 d( L
系统复位:不受影响9 g, `- p) d- n3 e- B# u

10.png
' j5 S  ]4 W0 G) G0 E  n' d) g3 K
; M: g2 O( P9 x1 f" B' N

位 31:16 保留

位 15:0 WUT[15:0]:唤醒自动重载值位 (Wakeup auto-reload value bit)- X% E8 j1 J) z9 H5 Z9 S/ i
当使能唤醒定时器时(WUTE 置 1),每 (WUT[15:0] + 1) 个 ck_wut 周期将 WUTF 标志置 1一次。ck_wut 周期通过 RTC_CR 寄存器的 WUCKSEL[2:0] 位进行选择。
1 E+ x' F; m1 d. }当 WUCKSEL[2] = 1 时,唤醒定时器变为 17 位,WUCKSEL[1] 等效为 WUT[16],即要重载到定时器的最高有效位。

注意: WUTF 第一次置 1 发生在 WUTE 置 1 之后 (WUT+1) 个 ck_wut 周期。禁止在6 Y2 C+ L+ r% f7 O+ Z4 ^( @
WUCKSEL[2:0]=011(RTCCLK/2) 时将 WUT[15:0] 设置为 0x0000 。


, [% `5 G% o% n* W& b

5.7 RTC 校准寄存器 (RTC_CALIBR): ]: _0 H, k- t- ]7 S

RTC calibration register
2 E* r& J8 g4 s% U偏移地址:0x18; s% C8 Y! F7 f' b: h% K
上电复位值:0x0000 0000

系统复位:不受影响

$ Y: G/ U! V7 R( g3 q# W

11.png

6 u7 Z8 p! d) O1 p& I7 |/ T) J* t' l7 e1 q: |  n( f- W, M4 @

5.8 RTC 闹钟 A 寄存器 (RTC_ALRMAR)5 @( }3 Z$ G; M; h

RTC alarm A register
5 g& L+ y4 G; q偏移地址:0x1C+ |+ |; F  \7 V% r$ G& u( D
上电复位值:0x0000 0000) {+ B5 s' R! V# B- r
系统复位:不受影响

* L7 z' g, K, h: \; o$ i

12.png

; n9 }0 B( f+ }# H0 @" T- s1 E7 n
* X5 Z3 T9 m- ?7 t' j

位 31 MSK4:闹钟 A 日期掩码 (Alarm A date mask)
8 S8 E9 ], z+ U4 Y! s, T$ |0:如果日期/日匹配,则闹钟 A 置 1  W4 `8 H. }$ D2 H
1:在闹钟 A 比较中,日期/日无关

位 30 WDSEL:星期几选择 (Week day selection)
, D) a5 |% _/ U, V, d0:DU[3:0] 代表日期的个位/ Q- r) j3 n  b* c/ ^4 N$ Q
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)! I* d) a; B9 Q2 b! ~! i8 q
0:如果小时匹配,则闹钟 A 置 1
; O! f- N+ _$ w; l$ ~5 z1:在闹钟 A 比较中,小时无关

位 22 PM :AM/PM 符号 (AM/PM notation)" g5 o& X' t: M2 ~
0:AM 或 24 小时制
/ M: Y  h8 v3 x/ u1: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)
' \  V/ b3 G3 `: Z0 P; n0:如果分钟匹配,则闹钟 A 置 1
$ f! b) W2 m# Y) q8 k7 [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)
) @) T0 ~0 J6 s! p1 L  e0:如果秒匹配,则闹钟 A 置 1

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

位 6:4 ST[2:0]:秒的十位(BCD 格式)(Second tens in BCD format)。
" J" k; C4 G" `0 k位 3:0 SU[3:0]:秒的个位(BCD 格式)(Second units in BCD format)。

% r1 m5 Z  y0 T- |  p; i

5.9 RTC 写保护寄存器 (RTC_WPR)
& a, p. J6 u( n, v1 \" h. Y# Y

RTC write protection register: S. W0 t5 M  c  ^
偏移地址:0x24, \" `! A- v" H3 J3 S. E7 ?
复位值:0x0000 0000

' f/ \0 x0 L0 }/ ~

13.png
& Z# y3 C6 L, @- u9 ^
& C% M6 C' A+ X3 @

5.10 RTC 亚秒寄存器 (RTC_SSR)! x1 B# M; J2 f: D  A! U

RTC sub second register& o( b" A' ~+ \  [- [2 B
偏移地址:0x28( Y. i2 D/ v6 P2 _" C) o) m
上电复位值:0x0000 0000
  ]3 w4 l! t! G2 P# P- ~2 C& P系统复位:当 BYPSHAD = 0 时为 0x0000 0000;当 BYPSHAD = 1 时不受影响。( d  a& ~) Q# `, u' l4 z- A

14.png
) Y1 t! f& }' a2 p( [6 y/ I

, p1 {) y, u, @7 H

5.11 RTC 时间戳时间寄存器 (RTC_TSTR)
" I$ ?0 T' w" P: [" t+ K6 k

RTC time stamp time register" W. p* G: J# w4 b# s
偏移地址:0x308 N/ r& X, D: K
上电复位值:0x0000 0000. e5 q/ {& v) F8 u6 D3 m/ X$ C! Z
系统复位:不受影响- H* z4 |" |/ L( Q. x9 U5 y. v6 K* C

15.png

  i" P( T' E: x/ ]* V1 t. \7 q

5.12 RTC 备份寄存器 (RTC_BKPxR)
/ Y# Y+ _; I6 P. v; b  }

RTC backup registers0 q& q' c, d0 l0 w! K$ M# _( D
偏移地址:0x50 到 0x9C
7 Z1 L1 U' s' o' L- V7 D5 X上电复位值:0x0000 0000
5 P6 J" ~( x/ D& C5 m9 U系统复位:不受影响

5 a+ X: m3 R( Q8 x9 y: r

16.png

; a( H& c, O9 W" r0 t


, C$ u$ B7 s0 e) v; o& u* B( A
# g: M* O- M" X+ w( }7 n4 t
4.png
收藏 1 评论0 发布时间:2020-9-11 11:06

举报

0个回答

所属标签

相似分享

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