STMCU小助手
发布时间:2022-6-14 13:54
|
01. RTC概述4 E0 v6 u; c9 ^8 B J' m) C7 N 实时时钟 (RTC) 是一个独立的 BCD 定时器/计数器。RTC 提供一个日历时钟、两个可编程闹钟中断,以及一个具有中断功能的周期性可编程唤醒标志。RTC 还包含用于管理低功耗模式的自动唤醒单元。 两个 32 位寄存器包含二进码十进数格式 (BCD) 的秒、分钟、小时(12 或 24 小时制)、星期几、日期、月份和年份。此外,还可提供二进制格式的亚秒值。9 Q% n, i- H. h+ E4 Q5 \ 系统可以自动将月份的天数补偿为 28、29(闰年)、30 和 31 天。并且还可以进行夏令时补偿。; {2 \6 m, {6 c ' n1 a# V; r4 _5 n1 p* O$ q# n 其它 32 位寄存器还包含可编程的闹钟亚秒、秒、分钟、小时、星期几和日期。此外,还可以使用数字校准功能对晶振精度的偏差进行补偿。' m' w# q( I3 U $ b+ W, t1 {- m1 V0 t9 r0 i# N$ w 上电复位后,所有 RTC 寄存器都会受到保护,以防止可能的非正常写访问。8 S3 W7 ~0 g! H; W 无论器件状态如何(运行模式、低功耗模式或处于复位状态),只要电源电压保持在工作范围内,RTC 便不会停止工作。6 K) Y$ g z5 \' M1 F 02. RTC主要特性 RTC 单元的主要特性如下(参见 图 222 : RTC 框图 ):& w! R* E! Q1 w5 | [ ● 包含亚秒、秒、分钟、小时(12/24 小时制)、星期几、日期、月份和年份的日历。 ● 软件可编程的夏令时补偿。 ● 两个具有中断功能的可编程闹钟。可通过任意日历字段的组合驱动闹钟。 ● 自动唤醒单元,可周期性地生成标志以触发自动唤醒中断。 ● 参考时钟检测:可使用更加精确的第二时钟源(50 Hz 或 60 Hz)来提高日历的精确度。 ● 利用亚秒级移位特性与外部时钟实现精确同步。 ● 可屏蔽中断/事件:7 g6 Q( x7 [$ ^% z3 _0 C — 闹钟 A" s) w( L# H' x* ~2 C — 闹钟 B, ]: X& H0 a: q# n7 U; \ — 唤醒中断; G9 D* F: @. @) b8 x — 时间戳8 h% j& v3 `9 n# i; `7 ?* s — 入侵检测 ● 数字校准电路(周期性计数器调整)0 g7 l: g6 y6 r8 D5 z! n( _# W — 精度为 5 ppm — 精度为 0.95 ppm,在数秒钟的校准窗口中获得 ● 用于事件保存的时间戳功能(1 个事件)0 u$ A' }; T* ~6 j" l R& M$ D! u ● 入侵检测: — 2 个带可配置过滤器和内部上拉的入侵事件 ● 20 个备份寄存器(80 字节)。发生入侵检测事件时,将复位备份寄存器。/ P' T( g I1 | ● 复用功能输出 (RTC_OUT),可选择以下两个输出之一: — RTC_CALIB:512 Hz 或 1 Hz 时钟输出(LSE 频率为 32.768 kHz)。' ~9 t4 r) ^0 P; }. N8 \ 可通过将 RTC_CR 寄存器中的 COE[23] 位置 1 来使能此输出。该输出可连接到器件 RTC_AF1 功能。4 S* J+ b+ O# d) }& D. O — RTC_ALARM(闹钟 A、闹钟 B 或唤醒)。 可通过配置 RTC_CR 寄存器的 OSEL[1:0] 位选择此输出。该输出可连接到器件RTC_AF1 功能。 ● RTC 复用功能输入:- X% ~$ g& c7 Q/ I+ z — RTC_TS:时间戳事件检测。该输入可连接到器件 RTC_AF1 和 RTC_AF2 功能。 — RTC_TAMP1:TAMPER1 事件检测。该输入可连接到器件 RTC_AF1 和 RTC_AF2功能。- U3 z0 t' }# v9 f! P0 B3 I — RTC_TAMP2:TAMPER2 事件检测。+ E5 _3 B& {5 s2 J. \$ y8 b — RTC_REFIN:参考时钟输入(通常为市电,50 Hz 或 60 Hz)。 5 M9 Q" ? U) v+ B3 H/ B9 a( j
03. RTC部分功能6 ~* V7 F, L4 y2 g 3.1 时钟和预分频器 RTC 时钟源 (RTCCLK) 通过时钟控制器从 LSE 时钟、LSI 振荡器时钟以及 HSE 时钟三者中选择。有关 RTC 时钟源配置的更多信息,请参见 第 6 节:复位和时钟控制 (RCC)。 可编程的预分频器阶段可生成 1 Hz 的时钟,用于更新日历。为最大程度地降低功耗,预分频器分为 2 个可编程的预分频器(参见 图 222 : RTC 框图 ):% m, R6 S& j' H4 w ● 一个通过 RTC_PRER 寄存器的 PREDIV_A 位配置的 7 位异步预分频器。2 F- ^5 ]' T# c3 B+ f ● 一个通过 RTC_PRER 寄存器的 PREDIV_S 位配置的 15 位同步预分频器。 , g2 `! f3 \; C9 }" H& U2 u1 ? 注意: 使用两个预分频器时,推荐将异步预分频器配置为较高的值,以最大程度降低功耗。, `! f) {0 H& t, p$ ]* W 要使用频率为 32.768 kHz 的 LSE 获得频率为 1 Hz 的内部时钟 (ck_spre),需要将异步预分频系数设置为 128,并将同步预分频系数设置为 256。分频系数的最小值为 1,最大值为 2 ^22 。这对应于约为 4 MHz 的最大输入频率。f ck_apre 可根据以下公式得出:* n. w4 \1 f [& q! F( _ a- q 9 W3 |5 X, g3 W$ a% S
3.2 实时时钟和日历 RTC 日历时间和日期寄存器可通过与 PCLK1(APB1 时钟)同步的影子寄存器来访问。这些时间和日期寄存器也可以直接访问,这样可避免等待同步的持续时间。 9 K4 n4 p3 Q: @# W4 i; A! b) M ● RTC_SSR 对应于亚秒 ● RTC_TR 对应于时间 ● RTC_DR 对应于日期 ! {6 _4 u% H `1 S, f7 Z 每隔两个 RTCCLK 周期,便将当前日历值复制到影子寄存器,并将 RTC_ISR 寄存器的 RSF位置 1(请参见 第 23.6.4 节 )。在停机和待机模式下不会执行复制操作。退出这两种模式时,影子寄存器会在最长 2 个 RTCCLK 周期后进行更新。+ M. I- l& K# y, N* W: { 2 O: G. l4 r7 H5 \4 c" {" U 当应用读取日历寄存器时,它会访问影子寄存器的内容。也可以通过将 RTC_CR 寄存器的BYPSHAD 控制位置 1 来直接访问日历寄存器。默认情况下,该位被清零,用户访问影子寄存器。% A8 O% [* [0 ?- a7 F8 Y $ b }1 @" O A0 p' N7 c 在 BYPSHAD=0 模式下读取 RTC_SSR、RTC_TR 或 RTC_DR 寄存器时,APB 时钟频率(f APB ) 必须至少为 RTC 时钟频率 (f RTCCLK ) 的 7 倍。影子寄存器通过系统复位来复位。; T$ ]- E5 } o) H 04. RTC低功耗模式和中断. s: ^" C- G. u 低功耗模式6 T! y8 ?) S5 D. b$ a) q4 V4 E 7 h0 @' a$ z3 o' q
) @8 ^6 s' L* ?" y3 V7 L; L RTC中断 所有 RTC 中断均与 EXTI 控制器相连。 4 x- ~4 T" a9 P3 U* d9 |3 b 要使能 RTC 闹钟中断,需按照以下顺序操作:3 o1 b' g7 `3 F' d { ! b" l( g% z+ C% _+ l 1.将 EXTI 线 17 配置为中断模式并将其使能,然后选择上升沿有效。& G2 J) C) I) X, z2 R ! P% S% U2 K3 k4 N; M 2.配置 NVIC 中的 RTC_Alarm IRQ 通道并将其使能。 3.配置 RTC 以生成 RTC 闹钟(闹钟 A 或闹钟 B)。# y' u# E* {7 J; b/ u, \+ w) P " h- a2 C- a. C/ n( M" t/ m 要使能 RTC 唤醒中断,需按照以下顺序操作:' y# y, J2 Y6 `6 Y$ b3 L 1.将 EXTI 线 22 配置为中断模式并将其使能,然后选择上升沿有效。3 k: L$ j2 ]! `5 E' O3 N/ n 2.配置 NVIC 中的 RTC_WKUP IRQ 通道并将其使能。2 _* o& g& X% W 3.配置 RTC 以生成 RTC 唤醒定时器事件。) V9 `3 L! h* y8 }* t8 B1 m - v0 P/ H: P& t$ o' m 要使能 RTC 入侵中断,需按照以下顺序操作:& ]1 O7 X i+ M3 [2 v3 t/ l 1.将 EXTI 线 21 配置为中断模式并将其使能,然后选择上升沿有效。 2.配置 NVIC 中的 TAMP_STAMP IRQ 通道并将其使能。 9 H/ |( N3 ]/ s6 `+ D, V" F7 L 3.配置 RTC 以检测 RTC 入侵事件。- \- R" h/ a0 N$ O0 h) X, a * a8 W! }. o# i r, X. k 要使能 RTC 时间戳中断,需按照以下顺序操作:% n' e! `# ?* y$ ]9 T9 p' Y 1.将 EXTI 线 21 配置为中断模式并将其使能,然后选择上升沿有效。) V1 w; h1 K, _9 H& y) N# k & n$ ?( S1 S/ u+ T 2.配置 NVIC 中的 TAMP_STAMP IRQ 通道并将其使能。 3.配置 RTC 以检测 RTC 时间戳事件。0 N% d, k w! Q- R& Q1 Q % D# j8 |6 P1 N# ?6 p
( N4 a& K1 P& x 05. RTC寄存器 5.1RTC 时间寄存器 (RTC_TR)* M2 X; E) e2 r2 U7 {0 } RTC time register: N, ^/ w2 z" ~, z+ k RTC_TR 是日历时间影子寄存器。只能在初始化模式下对该寄存器执行写操作。% `# i5 Y# Z( t9 ~/ _ 偏移地址:0x00 上电复位值:0x0000 00006 `0 O. {& p% s5 G. y; z 系统复位:当 BYPSHAD = 0 时为 0x0000 0000;当 BYPSHAD = 1 时不受影响。: N$ c& }2 E2 F# V+ [
5.2 RTC 日期寄存器 (RTC_DR) RTC date register RTC_DR 是日历日期影子寄存器。只能在初始化模式下对该寄存器执行写操作。 偏移地址:0x041 e! b0 r( b7 i/ M 上电复位值:0x0000 21014 G5 ?* `- G; P5 J, I% U 系统复位:当 BYPSHAD = 0 时为 0x0000 2101;当 BYPSHAD = 1 时不受影响; G% x. \- d" v
& a. B; ^+ p, ^' R5 y1 }4 Z 5.3 RTC 控制寄存器 (RTC_CR) RTC control register 偏移地址:0x08 上电复位值:0x0000 0000) y# G& j) R' c' H: f! J/ k* \ 系统复位:不受影响 ; I' ^8 c" b, X& D% u
3 \3 `- n8 L6 ]$ I. ` 位 22:21 OSEL[1:0]:输出选择 (Output selection) 这些位用于选择要连接到 RTC_ALARM 输出的标志# D- B; k9 S0 J, Y5 j! [ 00:禁止输出 01:使能闹钟 A 输出. [4 J% Y$ n+ F! s6 \' Y 10:使能闹钟 B 输出 11:使能唤醒输出 位 20 POL:输出极性 (Output polarity)% A2 @& m% R, T$ ?% p. b 该位用于配置 RTC_ALARM 输出的极性 0:当 ALRAF/ALRBF/WUTF 置 1 时(取决于 OSEL[1:0]),该引脚为高电平 1:当 ALRAF/ALRBF/WUTF 置 1 时(取决于 OSEL[1:0]),该引脚为低电平 位 19 COSEL:校准输出选择 (Calibration output selection) 当 COE=1 时,该位可选择 RTC_CALIB 上输出的信号。1 H: P" m- [# o 0:校准输出为 512 Hz 1:校准输出为 1 Hz1 \" A$ m* ?) M0 ]7 ? 在 RTCCLK 为 32.768 kHz 且预分频器为其默认值(PREDIV_A=127 且 PREDIV_S=255) 的条件下,这些频率有效。请参见 第 23.3.14 节:校准时钟输出 。 位 18 BKP:备份 (Backup) 用户可对此位执行写操作以记录是否已对夏令时进行更改。% H# `: |& A4 S) g) ^- ` 位 17 SUB1H:减少 1 小时(冬季时间更改)(Subtract 1 hour (winter time change))" p4 ?+ V% a0 p* I1 ~) m! Z; Q2 j1 J 当该位在初始化模式以外的模式下置 1 时,如果当前小时不是 0,则日历时间将减少 1 小2 U. `$ U' e) e3 S& l' a4 b: Q Z 时。此位始终读为 0。 当前小时为 0 时,将此位置 1 没有任何作用。$ X+ p9 X _; n$ m5 G' s g 0:无作用。! W# W" @9 K2 @& U 1:将当前时间减少 1 小时。这可用于冬季时间更改。 位 16 ADD1H:增加 1 小时(夏季时间更改)(Add 1 hour (summer time change)) 当该位在初始化模式以外的模式下置 1 时,日历时间将增加 1 小时。此位始终读为 0。 0:无作用。 1:将当前时间增加 1 小时。这可用于夏季时间更改1 l- f6 q: O; Q4 a. x) u& } 位 15 TSIE:时间戳中断使能 (Timestamp interrupt enable)4 q, v+ w, R- R: F3 {" f 0:禁止时间戳中断 1:使能时间戳中断/ K- e2 ]7 }! T' S9 l$ B 位 14 WUTIE:使能唤醒定时器使能 (Wakeup timer interrupt enable)# b& |) w# i3 ~6 W3 E 0:禁止唤醒定时器中断 1:使能唤醒定时器中断 位 13 ALRBIE: 闹钟 B 中断使能 (Alarm B interrupt enable) 0:闹钟 B 中断禁止0 Y' s6 o1 e! I* Q 1:闹钟 B 中断使能 位 12 ALRAIE:闹钟 A 中断使能 (Alarm A interrupt enable) 0:禁止闹钟 A 中断7 g+ Z- L9 w8 Q. b2 {8 M 1:使能闹钟 A 中断 位 11 TSE:时间戳使能 (Time stamp enable)0 ~+ H* h: `6 {& m6 O5 u 0:禁止时间戳 1:使能时间戳 位 10 WUTE:唤醒定时器使能 (Wakeup timer enable) 0:禁止唤醒定时器0 e% X3 X7 E# G' ^" u3 a) h 1:使能唤醒定时器 - m. c l- L/ J* w7 j 位 9 ALRBE: 闹钟 B 使能 (Alarm B enable)4 G1 f2 n1 u; M2 _% | 0:禁止闹钟 B 1:使能闹钟 B 位 8 ALRAE :闹钟 A 使能 (Alarm A enable) 0:禁止闹钟 A 1:使能闹钟 A 位 7 DCE :粗略数字校准使能 (Coarse digital calibration enable) 0:禁止数字校准 1:使能数字校准9 B+ L/ N. n/ {& d; t PREDIV_A 必须大于或等于 6( j+ a4 ?2 H' y9 r, X 位 6 FMT:小时格式 (Hour format)% E. V: ~" Y, h1 a: { 0:24 小时/天格式 1:AM/PM 小时格式8 e9 }& q/ @2 u8 `! i 位 5 BYPSHAD:旁路影子寄存器 (Bypass the shadow registers) 0:日历值(从 RTC_SSR、RTC_TR 和 RTC_DR 读取时)取自影子寄存器,该影子寄存器& }; x. P: r" I5 \7 k6 V 每两个 RTCCLK 周期更新一次。 1:日历值(从 RTC_SSR、RTC_TR 和 RTC_DR 读取时)直接取自日历计数器。 注意:如果 APB1 时钟的频率低于 7 倍的 RTCCLK 频率,则必须将 BYPSHAD 置“ 1 ”。; N) g# h2 n8 g* X# l! B, U 位 4 REFCKON:参考时钟检测使能(50 Hz 或 60 Hz)(Reference clock detection enable (50 or9 w/ Y( V9 l3 O; g1 p 60 Hz)) 0:禁止参考时钟检测) O1 a! e% _: s8 j# V: m" Q 1:使能参考时钟检测0 ~8 F: b8 ~6 M0 @7 | 注意: PREDIV_S 必须为 0x00FF 。6 Q6 w1 \1 `3 Q! g# `+ G& r 位 3 TSEDGE:时间戳事件有效边沿 (Timestamp event active edge) 0:TIMESTAMP 上升沿生成时间戳事件$ B f4 |9 _6 g; |% _. L$ ?' k( R0 Z 1:TIMESTAMP 下降沿生成时间戳事件: f% B/ _6 k7 g0 q" K4 E+ `$ I9 n TSEDGE 发生更改时,必须复位 TSE 以避免将 TSF 意外置 1! o& L- K6 o+ ]1 ^. U4 h 位 2:0 WUCKSEL[2:0]:唤醒时钟选择 (Wakeup clock selection) 000:选择 RTC/16 时钟 001:选择 RTC/8 时钟 010:选择 RTC/4 时钟" h# d% v3 [# N) o: l5 a# C$ T 011:选择 RTC/2 时钟" B! |- i' H2 a1 U 10x:选择 ck_spre 时钟(通常为 1 Hz) 11x:选择 ck_spre 时钟(通常为 1 Hz)并将 WUT 计数器值增加 2 16 (见下面的注释)! P2 G$ m, D/ [# A& H& d6 ] 2 V& k* u a( M- }: q% h8 f 温馨提示+ N' n0 k( J# S6 i" I0 G * ?' u$ W: `7 O( @# j1 l u WUT = 唤醒单元计数器值。当 WUCKSEL[2:1 = 11] 时, WUT = (0x0000 to 0xFFFF) +0x10000 (增加的值)。 只能在初始化模式下 (RTC_ISR/INITF = 1) 对该寄存器的位 7 、 6 和 4 执行写操作。1 G* H& O9 a4 {- X$ z 只能在 RTC_CR WUTE 位 = 0 且 RTC_ISR WUTWF 位 = 1 时对该寄存器的位 2 到 0 执行写操作。0 n- t9 l( m& e* ] 建议不要在日历小时递增时更改小时,因为这样做会屏蔽日历小时的增量。ADD1H 和 SUB1H 的更改在下一秒生效。: m( |7 Y% f% R- T0 g! k3 W6 x* T, b 此寄存器受写保护。第 576 页的 RTC 寄存器写保护中介绍了写访问的过程。 * D1 x) Z5 N+ u( j8 P* W1 V 5.4 RTC 初始化和状态寄存器 (RTC_ISR) RTC initialization and status register 偏移地址:0x0C4 }9 p2 W5 l; d8 k$ T3 g) z% T 上电复位值:0x0000 0007 系统复位值:不受影响(INIT、INITF 和 RSF 除外,它们在复位时被清零)。/ A4 @& F' V" v5 E* T
# Z& u4 l; H3 x$ c6 h. W' l" L0 S 位 31:17 保留- v* H% N3 R5 ]$ k; }, M0 J 位 16 RECALPF:重新校准挂起标志 (Recalibration pending Flag)5 _% z9 _* m, i+ K# X# L2 P 当软件对 RTC_CALR 寄存器执行写操作时,RECALPF 状态标志将自动置“1”,指示 RTC_CALR 寄存器已屏蔽。当采用新的校准设置时,该位恢复为“0”。请参见 动态重校准一节。 [9 `$ g3 P* s5 C( O- Y5 J 位 15 保留,必须保持复位值。 位 14 TAMP2F:TAMPER2 检测标志 (TAMPER2 detection flag) 在入侵输入 2 上检测到入侵检测事件时,由硬件将此标志置 1。该标志由软件写零清除。, |' G4 v$ T! t% j0 e 2 `! y+ x( Y+ r. @1 D 位 13 TAMP1F:入侵检测标志 (Tamper detection flag) 当检测到入侵检测事件时,由硬件将此标志置 1。 该标志由软件写零清除。 ' ^6 Y' X6 C( a5 p/ s 位 12 TSOVF:时间戳溢出标志 (Timestamp overflow flag) 当在 TSF 已置 1 的情况下发生时间戳事件时,由硬件将此标志置 1。' Y6 N" m8 L ?- Z# n0 y 该标志由软件写零清除。建议仅在 TSF 位清零之后再检查并清零 TSOVF 位。否则,如果时" ]/ c+ C" M5 o5 g1 V+ W. C 间戳事件恰好在清零 TSF 位之前刚刚发生,则溢出事件可能会被漏掉。2 ~' [ O) j2 R+ `, V9 O " f& o8 |# ~3 Y: ? 位 11 TSF:时间戳标志 (Timestamp flag) 发生时间戳事件时,由硬件将此标志置 1。 该标志由软件写零清除。; }0 Y& O% l6 W3 c/ j+ P# S 位 10 WUTF:唤醒定时器标志 (Wakeup timer flag)( C. l- t0 {% S2 W0 C 当唤醒自动重载计数器计数到 0 时,由硬件将此标志置 1。 该标志由软件写零清除。! D' L' o; z/ {9 X* l g 软件必须在 WUTF 再次置 1 的 1.5 个 RTCCLK 周期之前将该标志清零。 位 9 ALRBF:闹钟 B 标志 (Alarm B flag) 当时间/日期寄存器(RTC_TR 和 RTC_DR)与闹钟 B 寄存器 (RTC_ALRMBR) 匹配时,由 硬件将该标志置 1。+ }& `6 t! V5 {8 p! U7 x5 Y 该标志由软件写零清除。 8 {3 @2 z; ~5 a7 l( _ 位 8 ALRAF:闹钟 A 标志 (Alarm A flag) _8 e! l% i) L2 I* ~8 f 当时间/日期寄存器(RTC_TR 和 RTC_DR)与闹钟 A 寄存器 (RTC_ALRMAR) 匹配时,由 硬件将该标志置 1。 @2 u& M k) q0 |: B; T 该标志由软件写零清除。 位 7 INIT:初始化模式 (Initialization mode)6 Z5 y$ x5 X0 {5 z& }" F: `; J 0:自由运行模式。 1:初始化模式,用于编程时间和日期寄存器(RTC_TR 和 RTC_DR)以及预分频器寄存器% R( R. x* k0 Q+ \ (RTC_PRER)。计数器停止计数,当 INIT 被复位后,计数器从新值开始计数。 ) {/ `+ B4 Z0 u7 y4 h. } 位 6 INITF:初始化标志 (Initialization flag)8 d2 {, s! A; P5 G& m 当此位置 1 时,RTC 处于初始化状态,此时可更新事件、日期和预分频器寄存器。 0:不允许更新日历寄存器。 1:允许更新日历寄存器。- f7 }! E) x* e2 ^) l# I 位 5 RSF:寄存器同步标志 (Registers synchronization flag)9 o9 L" J" l9 F$ e, |- Y 每次将日历寄存器的值复制到影子寄存器(RTC_SSRx、RTC_TRx 和 RTC_DRx)时,都 会由硬件将此位置 1。在初始化模式下、平移操作挂起时 (SHPF=1) 或在旁路影子寄存器模" l9 S0 F- E9 F$ Z+ K2 ~6 K% U6 ^ 式 (BYPSHAD=1) 下,该位由硬件清零。该位还可由软件清零。 0:日历影子寄存器尚未同步 1:日历影子寄存器已同步+ |; u) [, _- X6 C! m3 B" [ 位 4 INITS:初始化状态标志 (Initialization status flag)1 N( E8 B! i$ Z3 U& T+ Z 当日历年份字段不为 0 时(上电复位状态),由硬件将该位置 1。 0:日历尚未初始化 E6 i& {8 g* f% ?4 v) e* X, b Q 1:日历已经初始化* e4 ^, G+ L6 L0 q" ], C 4 [ I3 y6 [5 ]( k* ? 位 3 SHPF:平移操作挂起 (Shift operation pending)5 q; g& z: u* [; k- _4 D 0:没有平移操作挂起! y2 f: y: d( u! S; u. C 1:某个平移操作挂起 只要通过对 RTC_SHIFTR 寄存器执行写操作来启动平移操作,此标志便由硬件置 1。执行完3 z' ?7 ~* E1 L5 t1 { 相应的平移操作后,此标志由硬件清零。对 SHPF 执行写入操作不起作用。0 h% h& ]2 O# T0 Y# D7 o9 c 位 2 WUTWF:唤醒定时器写标志 (Wakeup timer write flag)& `) M& V$ y% w7 f& o 在 RTC_CR 寄存器中的 WUTE 位置 0 后,当唤醒定时器值可更改时,由硬件将该位置 1。! Z, X5 u" H6 ? 0:不允许更新唤醒定时器配置. a; n4 e9 M; M9 @9 |3 c9 d 1:允许更新唤醒定时器配置+ o! \/ ]8 H2 k% n( M9 x. Y : [! X6 C) @" f+ S% L 位 1 ALRBWF:闹钟 B 写标志 (Alarm B write flag)6 u0 J, o+ h: r9 |- d$ K8 x ~/ U 在 RTC_CR 寄存器中的 ALRBIE 位置 0 之后,当闹钟 B 的值可更改时,由硬件将该位置 1。+ k+ i# I) J# o) L0 Z! K 该位在初始化模式下由硬件清零。; g# O9 t+ z: M 0:不允许更新闹钟 B9 i; f- \( M% ]" }* k 1:允许更新闹钟 B0 Z$ V# ?7 S, Z L7 O' r* y! n ! b+ g! x% ?; P% }8 P 位 0 ALRAWF:闹钟 A 写标志 (Alarm A write flag)3 v. D ]$ _, F6 [7 ]1 K 在 RTC_CR 寄存器中的 ALRAE 位置 0 后,当闹钟 A 的值可更改时,由硬件将该位置 1。 该位在初始化模式下由硬件清零。 0:不允许更新闹钟 A 1:允许更新闹钟 A- E; N" K" W0 K g; O ( ^- ], R8 V: e: }5 |% H& L 5.5 RTC 预分频器寄存器 (RTC_PRER)& S) }* ?& o; d6 ~( R RTC prescaler register 偏移地址:0x10) v+ \5 h+ A; a% T- H; [ 上电复位值:0x007F 00FF 系统复位:不受影响 2 V* W& |5 u2 e
5.6 RTC 唤醒定时器寄存器 (RTC_WUTR) RTC wakeup timer register 偏移地址:0x14 上电复位值:0x0000 FFFF 系统复位:不受影响# K0 f- }5 c4 i; \ R% b( n
位 31:16 保留 位 15:0 WUT[15:0]:唤醒自动重载值位 (Wakeup auto-reload value bit) 当使能唤醒定时器时(WUTE 置 1),每 (WUT[15:0] + 1) 个 ck_wut 周期将 WUTF 标志置 1一次。ck_wut 周期通过 RTC_CR 寄存器的 WUCKSEL[2:0] 位进行选择。 当 WUCKSEL[2] = 1 时,唤醒定时器变为 17 位,WUCKSEL[1] 等效为 WUT[16],即要重载到定时器的最高有效位。 注意: WUTF 第一次置 1 发生在 WUTE 置 1 之后 (WUT+1) 个 ck_wut 周期。禁止在 WUCKSEL[2:0]=011(RTCCLK/2) 时将 WUT[15:0] 设置为 0x0000 。: Y) \; z7 V/ [# N' K, ? 1 G8 F$ \4 B: M4 Z% I$ H3 D/ ] 5.7 RTC 校准寄存器 (RTC_CALIBR) RTC calibration register 偏移地址:0x18. s7 ] ?9 e6 u z0 i 上电复位值:0x0000 0000 系统复位:不受影响 * E0 H8 h, H$ \
5.8 RTC 闹钟 A 寄存器 (RTC_ALRMAR) RTC alarm A register, }$ r7 C" ^+ @8 O0 ?; G$ u& b8 z 偏移地址:0x1C 上电复位值:0x0000 0000! }" c! N. j* t3 y 系统复位:不受影响
3 w7 G' o% O, Y- H+ g# Y# v 位 31 MSK4:闹钟 A 日期掩码 (Alarm A date mask) 0:如果日期/日匹配,则闹钟 A 置 1/ z# }; f6 b! Y; N9 G% J. G9 R6 X 1:在闹钟 A 比较中,日期/日无关 位 30 WDSEL:星期几选择 (Week day selection) 0:DU[3:0] 代表日期的个位6 U5 {( ^5 h( g( B 1:DU[3:0] 代表星期几。DT[1:0] 为无关位。 X2 P$ r- D( W6 ] - y9 U1 i4 A6 U* Y* P) h |. `2 F: U 位 29:28 DT[1:0]:日期的十位(BCD 格式)(Date tens in BCD format)。 5 W- j- f9 a7 {& E: X' F& L 位 27:24 DU[3:0]:日期的个位或日(BCD 格式)(Date units or day in BCD format)。7 l' |/ O. R3 h& n/ V 位 23 MSK3:闹钟 A 小时掩码 (Alarm A hours mask) 0:如果小时匹配,则闹钟 A 置 1 1:在闹钟 A 比较中,小时无关/ N( A- Q3 l8 ?7 g% N * Z7 t5 x& P/ G% g( d, B+ f/ f 位 22 PM :AM/PM 符号 (AM/PM notation) 0:AM 或 24 小时制 1:PM0 a- k" L$ }! P ( ~8 J/ b% @% a 位 21:20 HT[1:0]:小时的十位(BCD 格式)(Hour tens in BCD format)。3 g; `3 G# x6 G6 j; N, C 位 19:16 HU[3:0]:小时的个位(BCD 格式)(Hour units in BCD format)。 位 15 MSK2:闹钟 A 分钟掩码 (Alarm A minutes mask) 0:如果分钟匹配,则闹钟 A 置 1# }& J( z( F& Y+ s$ i/ \( h 1:在闹钟 A 比较中,分钟无关 位 14:12 MNT[2:0]:分钟的十位(BCD 格式)(Minute tens in BCD format)。9 u/ @% A% i6 A: K Q ' b0 D+ e/ X2 {" A, E( M5 B 位 11:8 MNU[3:0]:分钟的个位(BCD 格式)(Minute units in BCD format)。4 |1 i0 k$ p! X) Q8 m) r 位 7 MSK1:闹钟 A 秒掩码 (Alarm A seconds mask) 0:如果秒匹配,则闹钟 A 置 1! O, q5 v b- }7 x5 ?) d- m4 K1 O , o g' T3 C3 J 1:在闹钟 A 比较中,秒无关, U% R* W2 }2 r 位 6:4 ST[2:0]:秒的十位(BCD 格式)(Second tens in BCD format)。: e) b, E( G+ }/ ^2 ?+ l 位 3:0 SU[3:0]:秒的个位(BCD 格式)(Second units in BCD format)。* \* c5 c" @' i8 \ 5.9 RTC 写保护寄存器 (RTC_WPR) RTC write protection register 偏移地址:0x24 复位值:0x0000 0000
+ v" J) c- l) O g* T 5.10 RTC 亚秒寄存器 (RTC_SSR), P+ E( T7 ?. y2 ^, L RTC sub second register 偏移地址:0x28 上电复位值:0x0000 0000 系统复位:当 BYPSHAD = 0 时为 0x0000 0000;当 BYPSHAD = 1 时不受影响。# t6 U6 P8 k6 D6 E
5.11 RTC 时间戳时间寄存器 (RTC_TSTR)4 G6 I# ^; Z2 t3 g8 Z9 i RTC time stamp time register 偏移地址:0x30 上电复位值:0x0000 0000 系统复位:不受影响; \# f Q0 G8 z5 C
5.12 RTC 备份寄存器 (RTC_BKPxR) RTC backup registers 偏移地址:0x50 到 0x9C# M- {; \4 g' P2 }- Q7 g 上电复位值:0x0000 00004 C3 w5 l9 ]" }( ?2 a 系统复位:不受影响# [3 h6 H/ }8 h2 ~+ x! o |' s6 p0 Q* [
0 G/ h6 s5 o5 w4 l. R1 N( K |
【经验分享】STM32语音识别的智能蓝牙音箱(源程序+原理图+PCB+设计说明书+PPT)
想找个ST芯片
[GPIO] 使用新型抽象开始C++嵌入式编程,从GPIO开始
技术手册stm32f1xx中的一个小问题
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
微信公众号
手机版