注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题

chenht7的个人空间 http://home.eeworld.com.cn/space-uid-490705.html [收藏] [复制] [分享] [RSS]

日志

学STM32-库-RTC(实时时钟)

已有 302 次阅读2017-8-21 10:28 |个人分类:STM32

 学STM32-库-RTC(实时时钟)
---
2017/8/21

# 一、内容概述  

## 1.1 主要功能
实时时钟是一个独立的定时器,在软件的配置下,能够提供时钟日历的功能。并且能够通过修改数值来重新设置系统时间。

RTC由两个部分组成,第一部分(APB1接口),主要用于和APB1总线连接。另一部分(RTC核心)由一组可编程计数器组成,其中分为两个模块,一个是预分频模块,一个是可编程产生最长为1秒的RTC时间基准TR_CLK。

具体的内容,还是以《参考手册》为准,那内容写的很漂亮。

## 1.2 整体框架

[整体框图]

# 二、主体阐述  
## 2.1 过程
## 2.1.1 复位过程
通过备份域复位信号复位:RTC_PRL、RTC_ALR、RTC_CNT和RTC_DIV寄存器
由系统复位或电源复位进行异步复位:除上述外的寄存器。

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

### 2.1.3 配置RTC寄存器
必须设置RTC_CRL寄存器中的CNF位,使RTC进入配置模式后,才能写入RTC_PRL、RTC_CNT、RTC_ALR寄存器。
配置过程: 
1. 查询RTOFF位,直到RTOFF的值变为’1’ 
2. 置CNF值为1,进入配置模式 
3. 对一个或多个RTC寄存器进行写操作 
4. 清除CNF标志位,退出配置模式 
5. 查询RTOFF,直至RTOFF位变为’1’以确认写操作已经完成。

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

### 2.1.4 RTC标志的设置
在每一个RTC核心的时钟周期中,更改RTC计数器之前设置RTC秒标志(SECF)。 
在计数器到达0x0000之前的最后一个RTC时钟周期中,设置RTC溢出标志(OWF)。 
在计数器的值到达闹钟寄存器的值加1(RTC_ALR+1)之前的RTC时钟周期中,设置RTC_Alarm和RTC闹钟标志(ALRF)。

## 2.2 寄存器
可以用半字(16位)或字(32位)的方式操作这些外设寄存器。

### 2.2.1 RTC控制寄存器高位(RTC_CRH)

该半字主要是用来设置:
OWIE:允许溢出中断位 (Overflow interrupt enable)
ALRIE:允许闹钟中断 (Alarm interrupt enable)
SECIE:允许秒中断 (Second interrupt enable)

### 2.2.2 RTC控制寄存器低位(RTC_CRL)

RTOFF:RTC操作关闭 (RTC operation OFF)
CNF:配置标志 (Configuration flag)
RSF:寄存器同步标志 (Registers synchronized flag)
OWF:溢出标志 (Overflow flag)
ALRF:闹钟标志 (Alarm flag)
SECF:秒标志 (Second flag)

### 2.2.3 RTC预分频装载寄存器
预分频装载寄存器用来保存RTC预分频器的周期计数值。它们受RTC_CR寄存器的RTOFF位保护,仅当RTOFF值为’1’时允许进行写操作。

### 2.2.4 RTC预分频器余数寄存器(RTC_DIVH / RTC_DIVL)
在TR_CLK的每个周期里,RTC预分频器中计数器的值都会被重新设置为RTC_PRL寄存器的值。
用户可通过读取RTC_DIV寄存器,以获得预分频计数器的当前值,而不停止分频计数器的工作,从而获得精确的时间测量。
此寄存器是只读寄存器,其值在RTC_PRL或RTC_CNT寄存器中的值发生改变后,由硬件重新装载。

### 2.2.5 RTC计数器寄存器 (RTC_CNTH / RTC_CNTL)
计数器以预分频器产生的TR_CLK时间基准为参考进行计数。
RTC_CNT寄存器用来存放计数器的计数值。
他们受RTC_CR的位RTOFF写保护。


### 2.2.6 RTC闹钟寄存器(RTC_ALRH/RTC_ALRL)
触发一个闹钟事件,并且产生RTC闹钟中断。此寄存器受RTC_CR寄存器里的RTOFF位写保护。

# 三、总结
RTC寄存器这个库,主要是提供了对于实时时钟的功能的实现,其中为了提高准确性,内容中包括了软件校准的方法,定时与分频的功能,以及对于定时时间到后,会进行的处理,比如秒标志,闹钟标志,溢出标志。

# 参考资料
[1] 野火团队,《零死角玩转STM32》[M].  
[2] ST公司,《UM0427用户手册-2位基于ARM微控制器STM32F101xx与STM32F103xx-固件函数库》[M].  
[3] ST公司,《STM32F10xxx参考手册-小,中和大容量的STM32F101xx, STM32F102xx和STM32F103xx-ARM内核32位高性能微控制器》[M].
[4] ST公司,《AN2604 Application note - STM32F101xx and STM32F103xx RTC calibration》

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2017-9-26 02:34 , Processed in 0.157145 second(s), 11 queries , Redis On.

Powered by EEWORLD电子工程世界

© 2017 http://bbs.eeworld.com.cn/

返回顶部