RTC时钟原理

一、RTC实时时钟特征与原理

1.RTC (Real Time Clock):实时时钟

  • RTC是个独立的定时器。RTC模块拥有一个连续计数的计数器,在相应的软件配置下,可以提供时钟日历的功能。修改计数器的值可以重新设置当前时间和日期。
  • RTC模块和时钟配置系统(RCC_BDCR寄存器)是在后备区域,即在系统复位或从待机模式唤醒后RTC的设置和时间维持不变。但是在系统复位后,会自动禁止访问后备寄存器和RTC,以防止对后备区域(BKP)的意外写操作。所以在要设置时间之前, 先要取消备份区域(BKP)写保护。

2.RTC特征 

可编程的预分频系数:分频系数最高为2的20次方。
32位的可编程计数器,可用于较长时间段的测量。
2个分离的时钟:用于APB1接口的PCLK1和RTC时钟(RTC时钟的频率必须小于PCLK1时钟频率的四分之一以上)。
可以选择以下三种RTC的时钟源:
HSE时钟除以128;
LSE振荡器时钟;
LSI振荡器时钟(详见6.2.8节RTC时钟)。
2个独立的复位类型:
APB1接口由系统复位;
RTC核心(预分频器、闹钟、计数器和分频器)只能由后备域复位(详见6.1.3节)。
3个专门的可屏蔽中断:
闹钟中断,用来产生一个软件可编程的闹钟中断。
秒中断,用来产生一个可编程的周期性中断信号(最长可达1秒)。

 3.RTC工作原理框图

 

4.RTC由两部分组成: 

 APB1接口:用来和APB1总线相连。通过APB1接口可以访问RTC的相关寄存器(预分频值,计数器值,闹钟值)。

RTC核心:由一组可编程计数器组成。分两个主要模块。

第一个是RTC预分频模块,它可以编程产生最长1秒的RTC时间基TR_CLK。如果设置了秒中断允许位,可以产生秒中断。

第二个是32位的可编程计数器,可被初始化为当前时间。系统时间按TR_CLK周期累加并与存储在RTC_ALR寄存器中的可编程时间相比,当匹配时候如果设置了闹钟中断允许位,可以产生闹钟中断。

 RTC内核完全独立于APB1接口,软件通过APB1接口对RTC相关寄存器访问。但是相关寄存器只在RTC APB1时钟进行重新同步的RTC时钟的上升沿被更新。所以软件必须先等待寄存器同步标志位(RTC_CRL的RSF位)被硬件置1才读。

 二、BKP备份寄存器原理

1.RTC时钟源

三、 RTC常用寄存器+库函数讲解

1.BKP备份寄存器

备份寄存器是42个16位的寄存器。可用来存储84个字节数据。

它们处在备份区域,当VDD电源切断,仍然由VBAT维持供电。 当系统在待机模式下被唤醒,或者系统复位或者电源复位,它们也不会复位。

执行以下操作将使能对后备寄存器和RTC访问:

设置寄存器RCC_APB1ENR的PWREN和BKPEN位,使能电源和后备时钟。

设置寄存器PWR_CR的DBP位,使能对RTC和后备寄存器的访问。

2.BKP备份寄存器 

3.RTC相关寄存器

 RTC控制寄存器 (RTC_CRH, RTC_CRL)

RTC预分频装载寄存器 (RTC_PRLH, RTC_PRLL)

RTC预分频余数寄存器 (RTC_DIVH, RTC_DIVL)

RTC计数器寄存器 (RTC_CNTH, RTC_CNTL)

RTC闹钟寄存器 (RTC_ALRH ,RTC_ALRL)

4.RTC控制寄存器高位(RTC_CRH)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值