STMCU小助手
发布时间:2022-3-29 09:41
|
01. RTC概述 实时时钟 (RTC) 是一个独立的 BCD 定时器/计数器。RTC 提供一个日历时钟、两个可编程闹钟中断,以及一个具有中断功能的周期性可编程唤醒标志。RTC 还包含用于管理低功耗模式的自动唤醒单元。 两个 32 位寄存器包含二进码十进数格式 (BCD) 的秒、分钟、小时(12 或 24 小时制)、星期几、日期、月份和年份。此外,还可提供二进制格式的亚秒值。 系统可以自动将月份的天数补偿为 28、29(闰年)、30 和 31 天。并且还可以进行夏令时补偿。. R6 z" i( i9 z" ^4 b {7 F' x 6 B& Q9 f9 y7 \9 e 其它 32 位寄存器还包含可编程的闹钟亚秒、秒、分钟、小时、星期几和日期。此外,还可以使用数字校准功能对晶振精度的偏差进行补偿。 ' ^; U+ f. U: a+ c9 |$ o 上电复位后,所有 RTC 寄存器都会受到保护,以防止可能的非正常写访问。 # p: F, d; \/ E9 ] 无论器件状态如何(运行模式、低功耗模式或处于复位状态),只要电源电压保持在工作范围内,RTC 便不会停止工作。) X U5 f" D! j0 L5 A' q 02. RTC主要特性# D7 }( G% Z# d# o0 Q* ~9 ]8 _ RTC 单元的主要特性如下(参见 图 222 : RTC 框图 ): ● 包含亚秒、秒、分钟、小时(12/24 小时制)、星期几、日期、月份和年份的日历。8 l p. w2 U0 S1 \4 K ● 软件可编程的夏令时补偿。# ]( R' p8 Y' k5 D! G9 y ● 两个具有中断功能的可编程闹钟。可通过任意日历字段的组合驱动闹钟。$ r% E8 w* Q2 g6 P- s ● 自动唤醒单元,可周期性地生成标志以触发自动唤醒中断。 ● 参考时钟检测:可使用更加精确的第二时钟源(50 Hz 或 60 Hz)来提高日历的精确度。 ● 利用亚秒级移位特性与外部时钟实现精确同步。0 D* ~+ U# _/ t2 k" i; ^+ G4 _$ Z ● 可屏蔽中断/事件:/ V% Y2 q9 [( K: A( q. e/ d — 闹钟 A — 闹钟 B; w, z& H- u/ k6 n$ d — 唤醒中断 — 时间戳' ]8 f/ M+ p X: |1 ?' n# T — 入侵检测3 e! w+ I8 f8 F& x3 [/ M1 u( k ● 数字校准电路(周期性计数器调整)5 S- I: [7 m, c4 k7 f — 精度为 5 ppm — 精度为 0.95 ppm,在数秒钟的校准窗口中获得 ● 用于事件保存的时间戳功能(1 个事件) ● 入侵检测: — 2 个带可配置过滤器和内部上拉的入侵事件 ● 20 个备份寄存器(80 字节)。发生入侵检测事件时,将复位备份寄存器。 1 [, ]& O( H! c$ H$ R+ o2 a8 _ ● 复用功能输出 (RTC_OUT),可选择以下两个输出之一: — RTC_CALIB:512 Hz 或 1 Hz 时钟输出(LSE 频率为 32.768 kHz)。, T3 J7 y8 x1 W5 p 可通过将 RTC_CR 寄存器中的 COE[23] 位置 1 来使能此输出。该输出可连接到器件 RTC_AF1 功能。8 ~. T2 w/ R3 }6 G+ q) a6 G — RTC_ALARM(闹钟 A、闹钟 B 或唤醒)。4 Y- z7 j) Q1 l4 s- R8 I# F 可通过配置 RTC_CR 寄存器的 OSEL[1:0] 位选择此输出。该输出可连接到器件RTC_AF1 功能。) C3 [# E: R% K0 y7 Z* Q ● RTC 复用功能输入:& h3 p$ W9 E$ X8 W — RTC_TS:时间戳事件检测。该输入可连接到器件 RTC_AF1 和 RTC_AF2 功能。 — RTC_TAMP1:TAMPER1 事件检测。该输入可连接到器件 RTC_AF1 和 RTC_AF2功能。5 ~8 f$ W5 m7 N& M: C — RTC_TAMP2:TAMPER2 事件检测。' g, {6 s& {6 c+ E — RTC_REFIN:参考时钟输入(通常为市电,50 Hz 或 60 Hz)。' v& p3 q% M/ t `
0 x. k2 i e3 s( E 03. RTC部分功能 3.1 时钟和预分频器4 v7 X, o$ p% M5 c4 F$ z RTC 时钟源 (RTCCLK) 通过时钟控制器从 LSE 时钟、LSI 振荡器时钟以及 HSE 时钟三者中选择。有关 RTC 时钟源配置的更多信息,请参见 第 6 节:复位和时钟控制 (RCC)。' m8 s+ v3 n, z : M9 g; ]& P6 }5 y \0 a0 U8 ?( g, d& q 可编程的预分频器阶段可生成 1 Hz 的时钟,用于更新日历。为最大程度地降低功耗,预分频器分为 2 个可编程的预分频器(参见 图 222 : RTC 框图 ):" ]% X. B4 p1 E7 Z6 ]* o# ^0 O' [4 J1 w ● 一个通过 RTC_PRER 寄存器的 PREDIV_A 位配置的 7 位异步预分频器。 ● 一个通过 RTC_PRER 寄存器的 PREDIV_S 位配置的 15 位同步预分频器。5 e4 S) z/ y, l9 m7 N 注意: 使用两个预分频器时,推荐将异步预分频器配置为较高的值,以最大程度降低功耗。5 e2 { \, a5 `/ h# A1 D1 M" f5 k 6 q2 ]( U; \$ t r5 Z 要使用频率为 32.768 kHz 的 LSE 获得频率为 1 Hz 的内部时钟 (ck_spre),需要将异步预分频系数设置为 128,并将同步预分频系数设置为 256。分频系数的最小值为 1,最大值为 2 ^22 。这对应于约为 4 MHz 的最大输入频率。f ck_apre 可根据以下公式得出: , b/ h# ^1 Q: a5 B4 R" W2 w6 J
3.2 实时时钟和日历% M; K; ^! y) y* m1 p, U RTC 日历时间和日期寄存器可通过与 PCLK1(APB1 时钟)同步的影子寄存器来访问。这些时间和日期寄存器也可以直接访问,这样可避免等待同步的持续时间。 8 w( Z: k+ D8 d ● RTC_SSR 对应于亚秒 ● RTC_TR 对应于时间2 L- c' i+ b- [: Y) h ● RTC_DR 对应于日期' \5 t8 N- g9 b$ y A6 h9 a* a 每隔两个 RTCCLK 周期,便将当前日历值复制到影子寄存器,并将 RTC_ISR 寄存器的 RSF位置 1(请参见 第 23.6.4 节 )。在停机和待机模式下不会执行复制操作。退出这两种模式时,影子寄存器会在最长 2 个 RTCCLK 周期后进行更新。4 d+ C7 e! Y6 w " w+ j' g! L, o* {* } 当应用读取日历寄存器时,它会访问影子寄存器的内容。也可以通过将 RTC_CR 寄存器的BYPSHAD 控制位置 1 来直接访问日历寄存器。默认情况下,该位被清零,用户访问影子寄存器。5 ?. h s' p0 n# D# q4 H3 K0 o2 }% ] 在 BYPSHAD=0 模式下读取 RTC_SSR、RTC_TR 或 RTC_DR 寄存器时,APB 时钟频率(f APB ) 必须至少为 RTC 时钟频率 (f RTCCLK ) 的 7 倍。影子寄存器通过系统复位来复位。 04. RTC低功耗模式和中断 低功耗模式: x7 d7 H) x+ v6 `% m ; b f2 q: }3 o
RTC中断 % t+ _: V$ I- C) W0 | 所有 RTC 中断均与 EXTI 控制器相连。5 k4 y2 ], J7 b3 G1 |' L2 y* \ 要使能 RTC 闹钟中断,需按照以下顺序操作: + B$ G8 _$ B- A9 a 1.将 EXTI 线 17 配置为中断模式并将其使能,然后选择上升沿有效。1 Z( ~$ _/ v* v) _3 d4 X y 2.配置 NVIC 中的 RTC_Alarm IRQ 通道并将其使能。 3.配置 RTC 以生成 RTC 闹钟(闹钟 A 或闹钟 B)。+ S k! l+ r5 X9 ^, z& X0 d/ g 要使能 RTC 唤醒中断,需按照以下顺序操作:0 ~: B8 p- h9 u; l. @4 v y9 d. ]* b8 n! D7 i0 X 1.将 EXTI 线 22 配置为中断模式并将其使能,然后选择上升沿有效。6 ?# `- P: v! A2 @ 8 C5 l2 }2 R2 Q. D% Q" @* r 2.配置 NVIC 中的 RTC_WKUP IRQ 通道并将其使能。: W( @2 d3 U5 T5 `; i: { r( b 3.配置 RTC 以生成 RTC 唤醒定时器事件。 . C n7 P3 m8 V% X! Z 要使能 RTC 入侵中断,需按照以下顺序操作:, A) ~3 w9 i/ z$ x; o. c 1.将 EXTI 线 21 配置为中断模式并将其使能,然后选择上升沿有效。 2.配置 NVIC 中的 TAMP_STAMP IRQ 通道并将其使能。 3.配置 RTC 以检测 RTC 入侵事件。- Q- f1 S; Q S z# ~& }+ Q+ p2 b/ }$ J, z 要使能 RTC 时间戳中断,需按照以下顺序操作:0 a0 f, {- g8 x& |/ X/ h1 z6 P: M2 l: Q* E " ]/ s$ l/ ?- N9 c# | 1.将 EXTI 线 21 配置为中断模式并将其使能,然后选择上升沿有效。, d. o: L9 ~3 U1 x 9 |8 y5 t/ \- t: S2 f: x) E& \ 2.配置 NVIC 中的 TAMP_STAMP IRQ 通道并将其使能。 3.配置 RTC 以检测 RTC 时间戳事件。
05. RTC寄存器 5.1RTC 时间寄存器 (RTC_TR). `' ]8 R) c* b4 g RTC time register RTC_TR 是日历时间影子寄存器。只能在初始化模式下对该寄存器执行写操作。 偏移地址:0x00' j2 j# P" c; h' B2 ^9 C8 } 上电复位值:0x0000 0000' X0 d! O% S& h8 Q6 ~$ x) w0 n( P 系统复位:当 BYPSHAD = 0 时为 0x0000 0000;当 BYPSHAD = 1 时不受影响。 8 L, }3 `& M" u5 C- y9 }6 `3 T; L; J1 r. V
6 c; } O: c1 T 5.2 RTC 日期寄存器 (RTC_DR) RTC date register RTC_DR 是日历日期影子寄存器。只能在初始化模式下对该寄存器执行写操作。 偏移地址:0x04# E7 F& ], n( y& r$ I t, n5 k 上电复位值:0x0000 21019 H# B6 i' j9 y2 z, } 系统复位:当 BYPSHAD = 0 时为 0x0000 2101;当 BYPSHAD = 1 时不受影响# F6 I3 t( H1 N$ h2 S1 L! Z 9 M; Y$ v) q5 I4 [6 T
5.3 RTC 控制寄存器 (RTC_CR)9 U5 u5 l2 h% K8 S1 } RTC control register 偏移地址:0x08 上电复位值:0x0000 0000 系统复位:不受影响 5 v! _) L0 P- [% E* j2 X! R0 L5 O$ d% z
位 22:21 OSEL[1:0]:输出选择 (Output selection) 这些位用于选择要连接到 RTC_ALARM 输出的标志2 q' k+ |4 S1 A, w- M 00:禁止输出$ ^- i5 R. ]: V' x3 z+ l% t7 Z" D 01:使能闹钟 A 输出 10:使能闹钟 B 输出) O$ v, a1 S P( I# x$ t 11:使能唤醒输出( H4 V W& a* M$ O 位 20 POL:输出极性 (Output polarity)! d$ x7 `" T6 ` k" [# G$ W8 e# C 该位用于配置 RTC_ALARM 输出的极性" E* E8 W& K, o0 o- b 0:当 ALRAF/ALRBF/WUTF 置 1 时(取决于 OSEL[1:0]),该引脚为高电平7 e8 I+ h, `/ z8 y! }2 x 1:当 ALRAF/ALRBF/WUTF 置 1 时(取决于 OSEL[1:0]),该引脚为低电平 位 19 COSEL:校准输出选择 (Calibration output selection) 当 COE=1 时,该位可选择 RTC_CALIB 上输出的信号。% b! c, ^$ w- @$ z, G: N4 v 0:校准输出为 512 Hz 1:校准输出为 1 Hz 在 RTCCLK 为 32.768 kHz 且预分频器为其默认值(PREDIV_A=127 且 PREDIV_S=255) 的条件下,这些频率有效。请参见 第 23.3.14 节:校准时钟输出 。- g( P- g2 T, a3 ?4 g4 ?" v 位 18 BKP:备份 (Backup)' ]2 m0 o. t9 N- z: N 用户可对此位执行写操作以记录是否已对夏令时进行更改。 位 17 SUB1H:减少 1 小时(冬季时间更改)(Subtract 1 hour (winter time change)) 当该位在初始化模式以外的模式下置 1 时,如果当前小时不是 0,则日历时间将减少 1 小 时。此位始终读为 0。 当前小时为 0 时,将此位置 1 没有任何作用。9 {, E7 K3 }' } 0:无作用。 1:将当前时间减少 1 小时。这可用于冬季时间更改。 位 16 ADD1H:增加 1 小时(夏季时间更改)(Add 1 hour (summer time change)) 当该位在初始化模式以外的模式下置 1 时,日历时间将增加 1 小时。此位始终读为 0。* J* g, ^+ d7 L% J' g8 R 0:无作用。' d) p3 V- w& b W# J; Y 1:将当前时间增加 1 小时。这可用于夏季时间更改. F; {# q( e1 j, Z3 a4 x 位 15 TSIE:时间戳中断使能 (Timestamp interrupt enable) 0:禁止时间戳中断$ ?8 A: q" y! H2 T6 j0 j 1:使能时间戳中断$ k$ ]- T7 B) F7 e 位 14 WUTIE:使能唤醒定时器使能 (Wakeup timer interrupt enable); ~+ P, ~$ @0 T/ e 0:禁止唤醒定时器中断 1:使能唤醒定时器中断/ q9 X) y. c, J 位 13 ALRBIE: 闹钟 B 中断使能 (Alarm B interrupt enable)- c7 T' p# Q( @( ]- A6 e 0:闹钟 B 中断禁止( S% n- P0 V. [+ v+ P8 g 1:闹钟 B 中断使能3 e: D7 @- R- i 位 12 ALRAIE:闹钟 A 中断使能 (Alarm A interrupt enable) 0:禁止闹钟 A 中断 1:使能闹钟 A 中断5 d6 @# Y- y, v8 M- j 位 11 TSE:时间戳使能 (Time stamp enable) 0:禁止时间戳 1:使能时间戳 位 10 WUTE:唤醒定时器使能 (Wakeup timer enable) 0:禁止唤醒定时器( ?8 ]& B5 x/ j. Z. a4 M! D 1:使能唤醒定时器 位 9 ALRBE: 闹钟 B 使能 (Alarm B enable) 0:禁止闹钟 B 1:使能闹钟 B 位 8 ALRAE :闹钟 A 使能 (Alarm A enable)9 Q( f3 c1 L1 E 0:禁止闹钟 A) j9 P S, W& q4 h. z2 i 1:使能闹钟 A- T# q8 J V7 i" D2 Y- Q 位 7 DCE :粗略数字校准使能 (Coarse digital calibration enable) 0:禁止数字校准5 x8 y8 S" p# d, c0 D' @ 1:使能数字校准9 e2 b% h5 M: E PREDIV_A 必须大于或等于 6 位 6 FMT:小时格式 (Hour format) 0:24 小时/天格式 1:AM/PM 小时格式' v4 O* H) N& [+ j4 W 位 5 BYPSHAD:旁路影子寄存器 (Bypass the shadow registers) 0:日历值(从 RTC_SSR、RTC_TR 和 RTC_DR 读取时)取自影子寄存器,该影子寄存器 每两个 RTCCLK 周期更新一次。 r) t8 N- D7 A5 u: g+ m4 u6 S* F 1:日历值(从 RTC_SSR、RTC_TR 和 RTC_DR 读取时)直接取自日历计数器。6 ~- `* ]3 k/ |. v8 ? 注意:如果 APB1 时钟的频率低于 7 倍的 RTCCLK 频率,则必须将 BYPSHAD 置“ 1 ”。5 K7 \+ k8 D& g' I9 D 位 4 REFCKON:参考时钟检测使能(50 Hz 或 60 Hz)(Reference clock detection enable (50 or 60 Hz)) 0:禁止参考时钟检测 1:使能参考时钟检测2 [5 V' k4 w9 p6 _# S 注意: PREDIV_S 必须为 0x00FF 。7 V, b; B- U) e( l 位 3 TSEDGE:时间戳事件有效边沿 (Timestamp event active edge)8 S! f/ X9 q: ]) \4 p 0:TIMESTAMP 上升沿生成时间戳事件 1:TIMESTAMP 下降沿生成时间戳事件 TSEDGE 发生更改时,必须复位 TSE 以避免将 TSF 意外置 17 q" q& n, x8 d6 s% h' W- Y 位 2:0 WUCKSEL[2:0]:唤醒时钟选择 (Wakeup clock selection)3 `' M) L/ V, g, E) X# E 000:选择 RTC/16 时钟 001:选择 RTC/8 时钟/ p+ ] {" L C# S+ h 010:选择 RTC/4 时钟 011:选择 RTC/2 时钟6 D' X3 v( F4 h" H1 q7 @+ b 10x:选择 ck_spre 时钟(通常为 1 Hz) 11x:选择 ck_spre 时钟(通常为 1 Hz)并将 WUT 计数器值增加 2 16 (见下面的注释) 温馨提示 WUT = 唤醒单元计数器值。当 WUCKSEL[2:1 = 11] 时, WUT = (0x0000 to 0xFFFF) +0x10000 (增加的值)。 只能在初始化模式下 (RTC_ISR/INITF = 1) 对该寄存器的位 7 、 6 和 4 执行写操作。- z; l0 ~( |$ l1 c( ]: s$ D 只能在 RTC_CR WUTE 位 = 0 且 RTC_ISR WUTWF 位 = 1 时对该寄存器的位 2 到 0 执行写操作。 建议不要在日历小时递增时更改小时,因为这样做会屏蔽日历小时的增量。ADD1H 和 SUB1H 的更改在下一秒生效。 此寄存器受写保护。第 576 页的 RTC 寄存器写保护中介绍了写访问的过程。 5.4 RTC 初始化和状态寄存器 (RTC_ISR)4 F, D$ i& s) q- ?. @ RTC initialization and status register 偏移地址:0x0C8 @# e, Y# ?# t9 d 上电复位值:0x0000 0007 系统复位值:不受影响(INIT、INITF 和 RSF 除外,它们在复位时被清零)。 ! b: X; l, a2 e& I5 B+ b
5 I, M; C) `8 S& j9 W; [$ t" {0 m 位 31:17 保留2 l+ K; M: q$ B3 ~4 p- Q 1 J6 `% u) P) D' {; T ] 位 16 RECALPF:重新校准挂起标志 (Recalibration pending Flag) 当软件对 RTC_CALR 寄存器执行写操作时,RECALPF 状态标志将自动置“1”,指示 RTC_CALR 寄存器已屏蔽。当采用新的校准设置时,该位恢复为“0”。请参见 动态重校准一节。6 q) ^4 v5 k; B U' q/ x# o$ h 位 15 保留,必须保持复位值。/ d' A. `; c0 D* \- s 位 14 TAMP2F:TAMPER2 检测标志 (TAMPER2 detection flag)+ i' e( B3 \5 d2 b7 ~ 在入侵输入 2 上检测到入侵检测事件时,由硬件将此标志置 1。该标志由软件写零清除。: A8 O5 s; d; W+ L/ k ~' b) F1 b% G7 P# U* e 位 13 TAMP1F:入侵检测标志 (Tamper detection flag)% d- \3 _# w# @ 当检测到入侵检测事件时,由硬件将此标志置 1。 该标志由软件写零清除。 位 12 TSOVF:时间戳溢出标志 (Timestamp overflow flag). R7 r; }8 e% B 当在 TSF 已置 1 的情况下发生时间戳事件时,由硬件将此标志置 1。: Q y. r9 Q5 f Q/ U 该标志由软件写零清除。建议仅在 TSF 位清零之后再检查并清零 TSOVF 位。否则,如果时: U N' {7 l2 p f/ k 间戳事件恰好在清零 TSF 位之前刚刚发生,则溢出事件可能会被漏掉。2 m$ e" N. j* _: a I) I6 a 位 11 TSF:时间戳标志 (Timestamp flag)6 l- \6 I, ?! I! n2 b, M 发生时间戳事件时,由硬件将此标志置 1。 该标志由软件写零清除。' ]3 O, A7 f! h/ a: D : Q8 `; w4 j# d# {3 c2 t 位 10 WUTF:唤醒定时器标志 (Wakeup timer flag)+ i, ?- }( ] R* F 当唤醒自动重载计数器计数到 0 时,由硬件将此标志置 1。* f+ Y) c5 r$ Y. x6 Q/ v' h: V 该标志由软件写零清除。. m6 U: W; F/ n' z1 ~$ r 软件必须在 WUTF 再次置 1 的 1.5 个 RTCCLK 周期之前将该标志清零。 K+ b7 [ X/ M% u0 j7 G ) `; F4 i$ h6 p: T$ E" U 位 9 ALRBF:闹钟 B 标志 (Alarm B flag): P4 \3 k$ W8 D( M$ t 当时间/日期寄存器(RTC_TR 和 RTC_DR)与闹钟 B 寄存器 (RTC_ALRMBR) 匹配时,由 硬件将该标志置 1。- J# L6 T! ^% o1 u4 u' Q; v. L 该标志由软件写零清除。/ N0 F7 o' i- A/ } : V8 m5 o) O- P% ^& ^6 a 位 8 ALRAF:闹钟 A 标志 (Alarm A flag) 当时间/日期寄存器(RTC_TR 和 RTC_DR)与闹钟 A 寄存器 (RTC_ALRMAR) 匹配时,由: F! A/ Q* o6 ]( d7 b, f 硬件将该标志置 1。& x/ t0 h" T3 A 该标志由软件写零清除。& f% x) z/ H8 P 位 7 INIT:初始化模式 (Initialization mode)- I/ O2 H! \7 b7 L+ L$ ], d* x 0:自由运行模式。 1:初始化模式,用于编程时间和日期寄存器(RTC_TR 和 RTC_DR)以及预分频器寄存器 (RTC_PRER)。计数器停止计数,当 INIT 被复位后,计数器从新值开始计数。& X" Q0 |6 [7 ~" g + s3 C+ M7 f+ @% n+ X G 位 6 INITF:初始化标志 (Initialization flag) 当此位置 1 时,RTC 处于初始化状态,此时可更新事件、日期和预分频器寄存器。: E# n1 q" `2 S7 d3 }+ Q, W 0:不允许更新日历寄存器。 1:允许更新日历寄存器。0 T1 T, c5 o3 s6 ` 8 i' K/ v1 n- C 位 5 RSF:寄存器同步标志 (Registers synchronization flag)8 C1 e2 r! u5 r. @! x 每次将日历寄存器的值复制到影子寄存器(RTC_SSRx、RTC_TRx 和 RTC_DRx)时,都 会由硬件将此位置 1。在初始化模式下、平移操作挂起时 (SHPF=1) 或在旁路影子寄存器模7 X0 o- g! n( F 式 (BYPSHAD=1) 下,该位由硬件清零。该位还可由软件清零。% x" a3 t& ]. A 0:日历影子寄存器尚未同步7 z3 ~- j K: K1 M4 q5 G 1:日历影子寄存器已同步9 v. B/ Y* R. W: a - g% f( K4 h* z* e 位 4 INITS:初始化状态标志 (Initialization status flag) 当日历年份字段不为 0 时(上电复位状态),由硬件将该位置 1。& o! J1 R, z$ j2 j0 B. x1 k 0:日历尚未初始化6 Z" E4 D6 Z$ N& V- q 1:日历已经初始化5 c/ t% l! `8 V9 I- K; o" P+ `% C' g- K / N0 ~0 W# I1 i% c 位 3 SHPF:平移操作挂起 (Shift operation pending)' Y; m& _ s/ r" w' R7 V2 L. H+ m 0:没有平移操作挂起/ K! h: @8 T; h0 o 1:某个平移操作挂起6 H1 B+ d) A* i5 @ 只要通过对 RTC_SHIFTR 寄存器执行写操作来启动平移操作,此标志便由硬件置 1。执行完+ }; D2 w( x6 n 相应的平移操作后,此标志由硬件清零。对 SHPF 执行写入操作不起作用。' a7 t6 b5 X: W 位 2 WUTWF:唤醒定时器写标志 (Wakeup timer write flag)# l/ h5 }) V$ H; I! h 在 RTC_CR 寄存器中的 WUTE 位置 0 后,当唤醒定时器值可更改时,由硬件将该位置 1。; M- t- r2 L' W- w$ f- A' [ 0:不允许更新唤醒定时器配置 1:允许更新唤醒定时器配置 位 1 ALRBWF:闹钟 B 写标志 (Alarm B write flag)1 ? O% v8 z5 m9 u3 y! S 在 RTC_CR 寄存器中的 ALRBIE 位置 0 之后,当闹钟 B 的值可更改时,由硬件将该位置 1。 该位在初始化模式下由硬件清零。 0:不允许更新闹钟 B 1:允许更新闹钟 B 位 0 ALRAWF:闹钟 A 写标志 (Alarm A write flag) 在 RTC_CR 寄存器中的 ALRAE 位置 0 后,当闹钟 A 的值可更改时,由硬件将该位置 1。* t: r/ t% S% ?5 u 该位在初始化模式下由硬件清零。6 ]& Z% T4 G7 y4 }$ J5 ^ 0:不允许更新闹钟 A 1:允许更新闹钟 A% r6 x! B. B' } 5.5 RTC 预分频器寄存器 (RTC_PRER)' ^9 h0 C) f4 {, h4 M/ [" J2 b RTC prescaler register 偏移地址:0x108 t9 ?, h, B, O; {9 u 上电复位值:0x007F 00FF 系统复位:不受影响# t2 l/ h2 S$ O* K9 e
& c! c3 y! O; W8 X5 U: X$ p 5.6 RTC 唤醒定时器寄存器 (RTC_WUTR) RTC wakeup timer register 偏移地址:0x141 N: M! {3 |' \: X6 B' {# [ 上电复位值:0x0000 FFFF 系统复位:不受影响5 R9 k* ^% e/ s/ z7 K9 r, D
( A. V# r7 C8 V9 N 位 31:16 保留0 e- E& Z; f; p0 ^- R" y% T / L7 L9 t( y, q5 B 位 15:0 WUT[15:0]:唤醒自动重载值位 (Wakeup auto-reload value bit): @" |5 r- h! ]# S& Y% q 当使能唤醒定时器时(WUTE 置 1),每 (WUT[15:0] + 1) 个 ck_wut 周期将 WUTF 标志置 1一次。ck_wut 周期通过 RTC_CR 寄存器的 WUCKSEL[2:0] 位进行选择。% u' g9 D' @; F; _ 当 WUCKSEL[2] = 1 时,唤醒定时器变为 17 位,WUCKSEL[1] 等效为 WUT[16],即要重载到定时器的最高有效位。 注意: WUTF 第一次置 1 发生在 WUTE 置 1 之后 (WUT+1) 个 ck_wut 周期。禁止在% q" k) W* O( `$ v6 o& u0 F! X WUCKSEL[2:0]=011(RTCCLK/2) 时将 WUT[15:0] 设置为 0x0000 。 5.7 RTC 校准寄存器 (RTC_CALIBR)( f' k% B6 a# O: V' t. w RTC calibration register 偏移地址:0x189 H8 W1 I; [4 \- {( T5 i8 h 上电复位值:0x0000 00002 j( Z$ ?- L8 l7 k" W6 H 系统复位:不受影响 - a3 Q1 P( `. y+ p2 y5 `
5.8 RTC 闹钟 A 寄存器 (RTC_ALRMAR) RTC alarm A register 偏移地址:0x1C 上电复位值:0x0000 0000 系统复位:不受影响: g: X* U! c7 a
位 31 MSK4:闹钟 A 日期掩码 (Alarm A date mask)% M3 R# c; ? A 0:如果日期/日匹配,则闹钟 A 置 1 1:在闹钟 A 比较中,日期/日无关 / `% b8 e/ B& Y) e, F- n m0 e 位 30 WDSEL:星期几选择 (Week day selection) 0:DU[3:0] 代表日期的个位 1:DU[3:0] 代表星期几。DT[1:0] 为无关位。! w2 A% r! n8 X# r2 ^3 k# Y 位 29:28 DT[1:0]:日期的十位(BCD 格式)(Date tens in BCD format)。" n+ J# z2 {9 r/ R+ i5 J- a) s( @+ } 位 27:24 DU[3:0]:日期的个位或日(BCD 格式)(Date units or day in BCD format)。" R* [+ v: W1 I : h# o3 e( x+ W6 G2 a 位 23 MSK3:闹钟 A 小时掩码 (Alarm A hours mask)5 y! B# l L5 Q9 V6 D* Z0 G 0:如果小时匹配,则闹钟 A 置 1 1:在闹钟 A 比较中,小时无关 4 d# f/ p( J6 G6 w 位 22 PM :AM/PM 符号 (AM/PM notation) 0:AM 或 24 小时制$ V* W+ v5 f: f4 ~) |8 {+ J 1:PM: S+ \; @1 Q1 c# k; Q- x 位 21:20 HT[1:0]:小时的十位(BCD 格式)(Hour tens in BCD format)。9 K7 `) `: F: ? 位 19:16 HU[3:0]:小时的个位(BCD 格式)(Hour units in BCD format)。 位 15 MSK2:闹钟 A 分钟掩码 (Alarm A minutes mask) 0:如果分钟匹配,则闹钟 A 置 1 1:在闹钟 A 比较中,分钟无关6 o- d" g$ C5 t# D" \) G 8 r% q v; [4 _& |3 B$ p 位 14:12 MNT[2:0]:分钟的十位(BCD 格式)(Minute tens in BCD format)。 3 A; P5 K- K2 K+ k4 J 位 11:8 MNU[3:0]:分钟的个位(BCD 格式)(Minute units in BCD format)。 位 7 MSK1:闹钟 A 秒掩码 (Alarm A seconds mask)8 I( {9 H" l) Z. G8 y% _6 v 0:如果秒匹配,则闹钟 A 置 1 1:在闹钟 A 比较中,秒无关: I+ B2 v; I2 x0 C . c9 F( F% R. a" u* F 位 6:4 ST[2:0]:秒的十位(BCD 格式)(Second tens in BCD format)。 位 3:0 SU[3:0]:秒的个位(BCD 格式)(Second units in BCD format)。1 H2 ]6 D: u3 }9 ^' ^0 b8 [ + |, ?, u) o5 q8 B9 v9 _ 5.9 RTC 写保护寄存器 (RTC_WPR), U( m8 h" O2 _' A9 o( N& P RTC write protection register 偏移地址:0x24 复位值:0x0000 0000" O5 w& S$ O+ e# C$ J% a: \5 Y: ~
. f6 {: T5 U% v0 F 5.10 RTC 亚秒寄存器 (RTC_SSR)$ h# h0 C. V: T9 u RTC sub second register 偏移地址:0x28 上电复位值:0x0000 0000 系统复位:当 BYPSHAD = 0 时为 0x0000 0000;当 BYPSHAD = 1 时不受影响。7 G5 b) @' M( G' n6 a ; `$ r. T. H( k! a! E! ]
5 U. F$ W% l0 J8 x! V- E 5.11 RTC 时间戳时间寄存器 (RTC_TSTR) RTC time stamp time register 偏移地址:0x306 d, p3 X H* s& v$ n0 }! j 上电复位值:0x0000 00006 k' e" l5 H6 Y; w/ ^ c2 ? 系统复位:不受影响
5.12 RTC 备份寄存器 (RTC_BKPxR) RTC backup registers 偏移地址:0x50 到 0x9C 上电复位值:0x0000 0000 系统复位:不受影响) d# l: V8 r+ v- B
8 E$ N, y( t* e |
【经验分享】STM32语音识别的智能蓝牙音箱(源程序+原理图+PCB+设计说明书+PPT)
想找个ST芯片
[GPIO] 使用新型抽象开始C++嵌入式编程,从GPIO开始
技术手册stm32f1xx中的一个小问题
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
微信公众号
手机版