嵌入式——实时时钟(RTC)
发布时间:2024-01-29 15:12:46
一、初识RTC
1.简介
实时时钟是一个独立的定时器。RTC模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能,计数频率常为秒。修改计数器的值可以重新设置系统当前的时间和日期。
2.特性
(1)32位的可编程计数器,可用于较长时间段的测量
(2)能在MCU掉电后运行
(3) 低功耗
3.后备寄存器和RTC寄存器特性
(1)部分寄存器写保护:RTC_PRL、RTC_ALR、RTC_CNT和RTC_DIV寄存器不会被系统复位。
(2)数据存储功能:RTC和后备寄存器不会被系统或电源复位源复位;当从待机模式唤醒时,也不会被复位。后备寄存器可用于保存掉电时的数据。
(3)独立工作:RTC和后备寄存器通过一个开关供电,在VDD有效时该开关选择VDD供电,否则由VBAT引脚供电。在VBAT供电时仍可继续工作。
(4)2个独立复位:APB1接口由系统复位;RTC核心只能由后备域复位;
二、RTC组成
1.相关寄存器
(1)控制寄存器高位(RTC_CRH)
(2)控制寄存器低位(RTC_CRL)
位5(RTOFF):RTC操作关闭。(指示对其寄存器进行的最后一次操作的状态,即指示操作是否完成)
位4(CNF):配置标志。(只有当此位在被置’1’并重新由软件清’0’后,从而允许向RTC_CNT、RTC_ALR或RTC_PRL寄存器写入数据)
(3)预分频装载寄存器高位(RTC_PRLH)
(4)预分频裝载寄存器低位(RTC_PRLL)
(5)计数器寄存器高位(RTC_CNTH)
(6)计数器寄存器低位(RTC_CNTL)
(7)电源控制寄存器(PWR_CR)
(8)APB1 外设时钟使能寄存器(RCC_APB1ENR)
(9)备份域控制寄存器(RCC_BDCR)
2.RTC结构
RTC由两个主要部分组成。第一部分(APB1接口)用来和APB1总线相连。另一部分(RTC核心)由一组可编程计数器组成,分成两个主要模块。第一个模块是RTC的预分频模块(可编程产生最长为1秒的RTC时间基准TR_CLK)。第二个模块是一个32位的可编程计数器,可被初始化为当前的系统时间。
(2)RTC的APB1单元还包含一组16位寄存器,可通过APB1,总线对其进行读写操作。
(3)APB1接口由APB1总线时钟驱动,用来与APB1总线接口。
(4)RTC的预分频模块包含的是一个20位的可编程分频器(RTC预分频器),分频系数最高为2的20次方。
(5)RTC有3个专门的可屏蔽中断:
(6)如果在RTC_CR寄存器中设置了相应的允许位,则在每个TR_CLK周期中RTC产生一个中断(秒中断)。
(7)系统时间按TR_CLK周期累加并与存储在RTC_ALR寄存器中的可编程时间相比较,如果RTC_CR控制寄存器中设置了相应允许位,比较匹配时将产生一个中断(闹钟中断)。
3.RTC基本配置步骤
(5)退出配置模式:清除CNF位,等待RTOFF 位为1(RTC_CRL)即配置完成。
4.RTC系统配置流程描述
(5)查询RTOFF,直至RTOFF