当前位置:文档之家› 实时时钟RTC

实时时钟RTC

即使系统供电消失,只要备 份域供电还在RTC仍可工作
两个可编程分频器
7位的PREDIV_A
默认因子 = 128,不能为0
LSI HSE (max= 1MHz)
通过HSE_RTC分频调节 /2 ~ /31
13位的PREDIV_S
默认因子= 256
@RCC_BDCR
Day/date/month/year HH:mm:ss (12/24 format)
=
Alarm B Flag
Alarm B
Synchronous 13bit Prescaler
PREDIV_S [12:0]
ss, mm, HH/date
Wake-Up
Asynchrone 4bit Prescaler
培训内容
RTC系统框图和组件
时钟源和分频器 硬件日历和警报 自动唤醒定时器
特色功能
数字粗略校准 参考时钟
外部引脚上的导出和导入功能
输出:警报、定时信号、校准时钟 输入:入侵检测
低功耗特性 STM32F2和STM32F1的RTC比较
3
RTC框图
AFI_TAMPER AFI_TIMESTAMP RTC Reference Clock RTCSEL [1:0]
6
配置时间格式(12/24小时)
置位或复位 FMT@RTC_CR
清零INIT@RTC_ISR 往RTC_WPR写入0xFF
7 8
退出初始化模式 使能RTC寄存器写保护
14
闹钟的设置非常灵活
Step 1 What to do 关闭RTC寄存器的写保护 How to do it 先后往RTC_WRP写入 0xCA和0x53 Comments RTC寄存器可以被修改了
实时时钟 RTC
1
培训内容
RTC系统框图和组件
时钟源和分频器 硬件日历和警报 自动唤醒定时器
特色功能
数字粗略校准 参考时钟
外部引脚上的导出和导入功能
输出:警报、定时信号、校准时钟 输入:入侵检测
低功耗特性 STM32F2和STM32F1的RTC比较
2
HSE (1 MHz) LSE LSI
RTCCLK
ss, mm, HH/date
Asynchronous 7bit Prescaler
=
Alarm A Flag
Calendar
RTC_CR_OSEL[1:0]
PREDIV_A [6:0] AFO_ALARM
Calibration
Day/date/month/year HH:mm:ss (12/24 format)
=
Alarm B Flag
Alarm B
Synchronous 13bit Prescaler
PREDIV_S [12:0]
ss, mm, HH/date
Wake-Up
Asynchrone 4bit Prescaler
WUCKSEL [2:0]
16bit autoreload Timer
Periodic wake up Flag
Tamper Flag
TimeStamp Registers
TimeStamp Flag 512 Hz clock output Alarm A AFO_CALIB
HSE (1 MHz) LSE LSI
RTCCLK
ss, mm, HH/date
Asynchronous 7bit Prescaler
=
1秒 RTCCLK
time 1 COPY COPY time 1 COPY time 1 COPY time 1 time 2 COPY time 1 COPY time 1
Real registert
Shadow register
time 1
RSF
RSF在影子寄存器被更新后由硬件置位; RSF可通过软件复位,也可在初始化模式时 被硬件复位
15
AFI_TAMPER AFI_TIMESTAMP RTC Reference Clock RTCSEL [1:0]
Backup Registers and RTC Tamper Control registers
Tamper Flag
TimeStamp Registers
TimeStamp Flag 512 Hz clock output Alarm A AFO_CALIB
注意:LSI精度不适用于日历应用
8
AFI_TAMPER AFI_TIMESTAMP RTC Reference Clock RTCSEL [1:0]
Backup Registers and RTC Tamper Control registers
Tamper Flag
TimeStamp Registers
举例1:每个周一的23:15:07产生闹钟 >> WDSEL = 1 >> MSKx = 0000b >> s = 7 (ST=0b,SU=0111b) >> mm = 15 (MT=01b,MU=0101b) >> hh = 23 (HT=10b,HU=11b) >> AM/PM = 0 (24小时制) >> D = 1 举例2:每个月1号的23:15:07产生闹钟 >> WDSEL = 0 >> 其余设置都一样
12
特殊情况下读取影子寄存器的特殊操作
从低功耗模式唤醒后,软件要读取日历信息
因为:低功耗模式下不更新影子寄存器 所以:先复位RSF标志,因为:系统复位信号会复位影子寄存器 所以:先复位RSF标志,再等待RSF置位
日历模块初始化后,软件要读取日历信息:
2
3 4 5 6
关闭警报A
等待访问允许的确认 设置闹钟 重新使能警报A 使能RTC寄存器写保护
复位ALRAE@RTC_CR
查询ALRAWF@RTC_ISR 直到它置位 设置RTC_ALRMAR 置位ALRAE@RTC_CR 往RTC_WPR写入0xFF RTC寄存器不能被修改 FMT格式要和日历一致
Backup Registers and RTC Tamper Control registers
Tamper Flag
TimeStamp Registers
TimeStamp Flag 512 Hz clock output Alarm A AFO_CALIB
HSE (1 MHz) LSE LSI
置位INIT@RTC_ISR
查询INITF@RTC_ISR直到 它置位
日历计数器停止以便于修 改
4
5
对预分频因子编程
装载时间和日期值
编程寄存器RTC_PRER: RTCCLK=32.768 KHz时, 先写同步分频因子,再写异 预分频因子默认产生1Hz 步因子 时钟 编程RTC_TR和RTC_DR FMT=0:24小时制 FMT=1:AM/PM制 自动载入当前日历计数器 值,4个RTCCLK后开始计 数 RTC寄存器不能被修改
RTCCLK
ss, mm, HH/date
Asynchronous 7bit Prescaler
=
Alarm A Flag
Calendar
RTC_CR_OSEL[1:0]
PREDIV_A [6:0] AFO_ALARM
Calibration
Day/date/month/year HH:mm:ss (12/24 format)
PREDIV_S [12:0]
ss, mm, HH/date
Wake-Up
Asynchrone 4bit Prescaler
WUCKSEL [2:0]
16bit autoreload Timer
Periodic wake up Flag
6 6
时钟源和分频器
RTC时钟源:RTCCLK
LSE (属于备份域)
Tamper Flag
TimeStamp Registers
TimeStamp Flag AFO_CALIB
RTCCLK
ss, mm, HH/date
=
Alarm A Flag
Calendar
RTC_CR_OSEL[1:0]
PREDIV_A [6:0] AFO_ALARM
Calibration RTC 数字校准
PREDIV_A [6:0] AFO_ALARM
Calibration
Day/date/month/year HH:mm:ss (12/24 format)
=
Alarm B Flag
Alarm B
Synchronous 13bit Prescaler
PREDIV_S [12:0]
ss, mm, HH/date
10
日历和闹钟寄存器
礼拜
月 年 日

12/24小时制
时 秒
日 礼拜
12/24小时制 时 秒 分
11
日历模块的时钟同步
用户以APB1的时钟读取日历寄存器
读取RTC_TR时硬件会锁定RTC_DR 先读取RTC_TR,再读取RTC_DR,保证时间连续性
要保证fPCLK1 ≥4*fRTCCLK
WUCKSEL [2:0]
16bit autoreload Timer
Periodic wake up Flag
5 5
AFI_TAMPER AFI_TIMESTAMP RTC Reference Clock RTCSEL [1:0]
Backup Registers and RTC Tamper Control registers
相关主题