intellij idea使用教程 顺序查找 vim npm安装 哨兵模式 reactjs sharepoint lambda hive eking文件 java并发编程视频 web前端开发实战项目 oracle查询所有数据库 mysql删除一列 js获取body的高度 linux查看jdk安装路径 python命令行 python环境变量 javarandom java终止线程 java比较字符串 ie模拟器 战地女记者 路由器有辐射吗 音频录制软件 万能低格工具 销售单软件 js数组移除指定元素 服务器系统安装 16进制编辑器 系统工具箱 cdr字体加粗 压枪软件 小米9截图 vs2017密钥 启用宏在哪里设置 ps文字旋转任意角度 android计算器 电子海图 qq网盘在哪里
当前位置: 首页 > 学习教程  > 编程语言

Stm32F103R6之实时时钟(RTC)

2020/9/19 13:43:15 文章标签:

目录

概述

主要特性

读RTC寄存器

配置RTC寄存器


概述

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

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

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

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

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

Stm32F103R6之实时时钟(RTC)

图 1RTC框图

主要特性

● 可编程的预分频系数:分频系数最高为220。

● 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周期。


本文链接: http://www.dtmao.cc/news_show_200066.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?