RTC是一种特殊的定时器,特殊之处在于RTC模块和时钟配置系统(RCC_BDCR寄存器)在后备区域(BKP),因此在系统复位或从待机模式唤醒后RTC的设置和时间维持不变。
由于在后备区域,所以不能人以访问修改。
启动访问RTC的操作:
1、设置寄存器RCC_APB1ENR的PWREN 和BKPEN位来使能电源和后备接口时钟。
2、设置寄存器PWR_CR的DBP位使能对后备寄存器和RTC的访问。
RTC时钟
RTC时钟由两部分组成,第一部分为PCLK1,用于向RTC寄存器读写寄存器的时钟。第二部分时钟为RTC的核心时钟,例如时钟计数等,RTC的核心时钟源可有三种:
①HSE时钟除以 128
②LSE振荡器时钟
③LSI振荡器时钟
RTC中断类型
时钟源可进行再次分频作为计数器的基本周期,最长可大一秒钟,因此又称为秒中断(可屏蔽);当计数器减到0时会出现下溢中断(可屏蔽);闹钟中断:当计数器与闹钟寄存器数值一样时会出现闹钟中断(可屏蔽)。
复位后不可变寄存器:RTC_PRL、RTC_ALR、RTC_CNT和RTC_DIV寄存器。
读RTC寄存器
可读寄存器只在与
RTC APB1 时钟进行重新同步的RTC时钟的上升沿被更新,因此会在未同步时读取寄存器时会出现不正确数据,通常会出现在以下三种情况之下:
①发生系统复位或电源复位
②系统刚从待机模式唤醒
③系统刚从停机模式唤醒
为达到数据正确,在进行数据读时需要查看同步标志位RSF位。
配置RTC寄存器过程:
1. 查询RTOFF位,直到RTOFF的值变为’1’(查看上一次是否对寄存器写入完成)
2. 置CNF值为1 ,进入配置模式 (只有进入配置模式才能对寄存器写入)
3. 对一个或多个RTC寄存器进行写操作
4. 清除CNF标志位,退出配置模式
5. 查询RTOFF,直至RTOFF位变为’1’ 以确认写操作已经完成。
仅当CNF标志位被清除时,写操作才能进行,这个过程至少需要3个RTCCLK 周期。
注:RTC预分频器余数寄存器存储的数据为RTC的以时钟源为周期的计数,并非分频后的周期。