RTC(REAL TIME CLOCK)原理
RTC(REAL TIME CLOCK)原理
RTC是个独立的定时器,RTC模块拥有一个连续计数的计数器,在相应的软件配置下,可以提供时钟日历的功能。修改计数器的值可以重新设置当前时间和日期
RTC模块和时钟配置系统(RCC_B DCR寄存器) 是在后备区域, 即在系统复位或从待机模式唤醒后RTC的设置和时间维持不变。但是在系统复位后, 会自动禁止访问后备寄存器和RTC,以防止对后备区域(BKP) 的意外写操作。所以在要设置时间之前,先要取消备份区域(BKP)写保护。
RTC特征
- 可编程的预分频系数:分频系数最高为2的20次方
- 32位的可编程计数器,可用于较长时间段的测量。
- 2个分离的时钟:用于APB
- 1接口的PCLK 1和RTC时钟(RTC时钟的频率必须小于PCLK 1时钟频率的四分之一以上)。
- 可以选择以下三种RTC的时钟源:
HSE时钟除以128
LSE振荡器时钟
LSI振荡器时钟 - 2个独立的复位类型:
APB 1接口由系统复位
RTC核心(预分频器、闹钟、译数器和分频器) 只能由后备域复位 - 3个专门的可屏蔽中断:
闹钟中断,用来产生一个软件可编程的闹钟中断。
秒中斯,用来产生一个可编程的周期性中断信号(最长可达1秒)
溢出中断,指示内部可编程计数器溢出并回转为0的状态。
RTC工作原理图
BKP备份寄存器
①备份寄存器是42个16位的寄存器。可用来存储84个字节数据。
②它们处在备份区域,当VDD电源切断, 仍然由VB AT维持供电。
③当系统在待机模式下被唤醒,或者系统复位或者电源复位,它们也
不会复位。
④执行以下操作将使能对后备寄存器和RTC访问:
设置寄存器RCC_APB1ENR的P WREN和BK PEN位, 使能电源和后备时钟。
设置寄存器PWR_CR的DBP位,使能对RTC和后备寄存器的访问。
RTC常用寄存器
RTOFF:RTC操作关闭
CNF:配置标志
RSF:寄存器同步标志
OWF:溢出标志
ALRF:闹钟标志
SECF:秒标志
①修改CRH/CRL寄存器,必须先判断RSF位,确定己经同步
②修改CNT, ALR, PRL的时候,必须先配置CNF位进入配置模式,修改完之后,设置CNF位为0退出配置模式
③同时在对RTC相关寄存器写操作之前,必须判断上一次写操作已经结束,也就是判断RT OFF位是否置位
配置过程
1.查询RT OFF位, 直到RT OFF的值变为’1’
2、置CNF值为1, 进入配置模式
3.对一个或多个RTC寄存器进行写操作
4.清除CNF标志位, 退出配置模式
5.查询RT OFF, 直至RT OFF位变为’1’以确认写操作已经完成。仅当CNF标志位被清除时, 写操作才能进行, 这个过程至少需要3个RTC CLK周期。
代码
判断是否配置时钟
配置过程