这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » STM32再学习——实时时钟(RTC)

共2条 1/1 1 跳转至

STM32再学习——实时时钟(RTC)

专家
2013-10-29 10:24:54     打赏

  RTC,是Real Time Counter的缩写。在MCU中,其实是一组连续计数的计数器,各个产品及系列各不相同。因此,在相应的软件配置下,可提供时钟日历的功能。当然,修改这个计数器的值也就重新设置了系统当前的时间和日期。

  本文引用地址:http://www.eepw.com.cn/article/182407.htm

  RTC只是一个时钟,但与RTC相连的有两个系统时钟,一个是APB1接口的PCLK1另一个是RTC时钟[注意1]。这样,RTC功能也就分为两个部分:第一部分,APB1接口部分,与APB1总线相连,MCU也就是通过这条总线对其进行读写操作。另一部,RTC核,由一系列可编程计数器组成,这部分又再细分为两个组件:预分频模块与32位可编程计数器。预分频模块用来产生最长为1秒的RTC时间基准,而32位的可编程的计数器可被初始化为当前的系统时间。

  下图为RTC简化框图:

  读RTC寄存器

  从上面的工作原理可知,RTC核完全独立于RTC APB1接口,软件通过APB1接口来访问RTC的各项参数,包括预分频值、计数器值等等,但是这些参数值只在RTC时钟的上升沿被更新,之后,RTC时钟会与RTC APB1时钟进行重新同步。这里会有一些问题出现,就是在APB1接口刚刚被开启时,第一次的内部寄存器更新之前,那么此时从RTC寄存器中读出的第一个值可能被破坏了,例如下面所述的三种情况:

  发生系统复位或电源复位

  系统刚从待机模式唤醒

  系统刚从停机模式唤醒

  可以简单得出,在APB1接口被禁止时(复位,无时钟或断电)RTC核仍保持运行状态。因此,在禁止了RTC的APB1接口后,软件首先须等等RSF位被硬件置1.

  RTC功能配置

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

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

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

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

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

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

  注意1:RTC时钟必须小于PCLK1时钟的四分之一以上。




关键词: STM32     MCU     寄存器    

高工
2013-10-30 23:01:48     打赏
2楼
介绍很全了,图有点不清

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]