STM32 RTC时钟和BKP的工作原理

RTC时钟和BKP的工作原理

RTC简介

实时时钟是一个独立的定时器。RTC模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。

    RTC模块和时钟配置系统(RCC_BDCR寄存器)处于后备区域,即在系统复位或从待机模式唤醒后,RTC的设置和时间维持不变。

     系统复位后,对后备寄存器和RTC的访问被禁止,这是为了防止对后备区域(BKP)的意外写操作。执行以下操作将使能对后备寄存器和RTC的访问:

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

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

主要特性

●  可编程的预分频系数:分频系数最高为2^20

●  32位的可编程计数器,可用于较长时间段的测量。

●  2个分离的时钟:用于APB1接口的PCLK1和RTC时钟

    (RTC时钟的频率必须小于PCLK1时钟频率的四分之一以上)。

●  可以选择以下三种RTC的时钟源:

        ─  HSE 时钟除以128;

        ─  LSE振荡器时钟;

        ─  LSI振荡器时钟

●  2个独立的复位类型:

        ─  APB1接口由系统复位;

        ─  RTC核心(预分频器、闹钟、计数器和分频器)

          只能由后备域复位

●  3个专门的可屏蔽中断:

        ─ 闹钟中断,用来产生一个软件可编程的闹钟中断。

        ─ 秒中断,用来产生一个可编程的周期性中断信号

           (最长可达1秒)。

        ─ 溢出中断,指示内部可编程计数器溢出并回转为0

           的状态。

RTC寄存器

 

RTC核完全独立于RTC APB1接口。

    软件通过APB1接口访问RTC的预分频值、计数器值和闹钟值。但是,相关的可读寄存器只在与RTC APB1时钟进行重新同步的RTC时钟的上升沿被更新。RTC标志也是如此的。

    这意味着,如果APB1接口曾经被关闭,而读操作又是在刚刚重新开启APB1之后,则在第一次的内部寄存器更新之前,从APB1上读出的RTC寄存器数值可能被破坏了(通常读到0) 。下述几种情况下能够发生这种情形:

    ●  发生系统复位或电源复位

    ●  系统刚从待机模式唤醒

    ●  系统刚从停机模式唤醒

    所有以上情况中,APB1接口被禁止时(复位、无时钟或断电)RTC核仍保持运行状态。

    因此,若在读取RTC寄存器时,RTC 的APB1 接口曾经处于禁止状态,则软件首先必须等待RTC_CRL寄存器中的RSF位(寄存器同步标志)被硬件置’1’。

配置RTC寄存器

必须设置RTC_CRL 寄存器中的CNF 位,使 RTC进入配置模式后,才能写入 RTC_PRL、RTC_CNT、RTC_ALR寄存器。

    另外,对RTC任何寄存器的写操作,都必须在前一次写操作结束后进行。可以通过查询RTC_CR寄存器中的RTOFF状态位,判断RTC寄存器是否处于更新中。仅当RTOFF状态位是’1’时,才可以写入RTC寄存器。

    配置过程:

        1. 查询RTOFF位,直到RTOFF的值变为’1’

        2. 置CNF值为1,进入配置模式

        3. 对一个或多个RTC寄存器进行写操作

        4. 清除CNF标志位,退出配置模式

        5.查询RTOFF,直至RTOFF位变为’1’ 以确认写操作已经完成。

    仅当CNF标志位被清除时,写操作才能进行,这个过程至少需要3个RTCCLK周期。

BKP简介

备份寄存器是42个16位的寄存器,可用来存储84个字节的用户应用程序数据。他们处在备份域里,当VDD 电源被切断,他们仍然由VBAT维持供电。当系统在待机模式下被唤醒,或系统复位或电源复位时,他们也不会被复位。

 

    此外,BKP控制寄存器用来管理侵入检测和RTC校准功能。

复位后,对备份寄存器和RTC的访问被禁止,并且备份域被保护以防止可能存在的意外的写操作。执行以下操作可以使能对备份寄存器和RTC的访问。

 

●  通过设置寄存器RCC_APB1ENR的PWREN和BKPEN位来打开电源和后备接口的时钟

●  电源控制寄存器(PWR_CR)的DBP位来使能对后备寄存器和RTC的访问。

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值