15.9、 RTC实时时钟实验

上传人:紫*** 文档编号:133014012 上传时间:2020-05-23 格式:PDF 页数:13 大小:447.63KB
返回 下载 相关 举报
15.9、 RTC实时时钟实验_第1页
第1页 / 共13页
15.9、 RTC实时时钟实验_第2页
第2页 / 共13页
15.9、 RTC实时时钟实验_第3页
第3页 / 共13页
15.9、 RTC实时时钟实验_第4页
第4页 / 共13页
15.9、 RTC实时时钟实验_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《15.9、 RTC实时时钟实验》由会员分享,可在线阅读,更多相关《15.9、 RTC实时时钟实验(13页珍藏版)》请在金锄头文库上搜索。

1、 RTC实时时钟实验实时时钟实验 本章节我们讲解STM32的RTC原理并通过每秒显示当前实时时间的例程来将掌握RTC 实时时钟功能及用法 意义与作用意义与作用 RTC Real time clock 是实时时钟的意思 神舟 IV 号开发板的处理器 STM32F107 集 成了 RTC Real time clock 实时时钟 在处理器复位或系统掉电但有实时时钟电池的情况 下 能维持系统当前的时间和日期的准确性 实时时钟是一个独立的定时器 RTC 实时时 钟模块拥有一组连续计数的计数器 在相应软件配置下 可提供时钟日历的功能 修改计数 器的值可以重新设置系统当前的时间和日期 STM32 的 RT

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

3、示内部可编程计数器溢出并回转为 0 的状态 实验原理实验原理 RTC由两个主要部分组成 参见下图 第一部分 APB1接口 用来和APB1总线相连 此 单元还包含一组16位寄存器 可通过APB1总线对其进行读写操作 参见16 4节 APB1接口 由APB1总线时钟驱动 用来与APB1总线接口 另一部分 RTC核心 由一组可编程计数器组 成 分成两个主要模块 第一个模块是RTC的预分频模块 它可编程产生最长为1秒的RTC 时间基准TR CLK RTC的预分频模块包含了一个20位的可编程分频器 RTC预分频器 如 果在RTC CR寄存器中设置了相应的允许位 则在每个TR CLK周期中RTC产生一个中

4、断 秒 中断 第二个模块是一个32位的可编程计数器 可被初始化为当前的系统时间 系统时间 按TR CLK周期累加并与存储在RTC ALR寄存器中的可编程时间相比较 如果RTC CR控制 寄存器中设置了相应允许位 比较匹配时将产生一个闹钟中断 图表 1 简化的 RTC 框图 RTC 模块和时钟配置系统 RCC BDCR 寄存器 处于后备区域 即在系统复位或从待机 模式唤醒后 RTC 的设置和时间维持不变 系统复位后 对后备寄存器和 RTC 的访问被禁 止 这是为了防止对后备区域 BKP 的意外写操作 执行以下操作将使能对后备寄存器和 RTC 的访问 设置寄存器 RCC APB1ENR 的 PWR

5、EN 和 BKPEN 位 使能电源和后备接口时钟 设置寄存器PWR CR的DBP位 使能对后备寄存器和RTC的访问 硬件设计硬件设计 神舟系列开发板的RTC的硬件设计非常简单 其主要硬件都集成在了处理器内部 外围 电路主需要一个32 768KH在的晶振和VBAT供电电池即可 STM32F107内部已经包含了40kHz低速内部RC振荡电路LSE 但是其精准度不是很高 为 此我们在外部增加了32 768KHz的晶振电路驱动RTC实时时钟 STM32的VBAT采用CR1220纽扣电池和VCC3 3混合供电的方式 在有外部电源 VCC3 3 的时候 BT1不给处理器的VBAT供电 而在外部电源断开的时

6、候 则由BT1给VBAT供电 这样 VBAT总是有电的 以保证RTC的持续运行以及后备寄存器的内容不丢失 相关电路如下 当安装了电池后 将 JP14 的 2 3 脚使用跳线帽短接 VBAT 管脚由电池供电 如没有安装 电池 将 JP14 的 1 2 脚使用跳线帽短接 VBAT 管脚由 3 3V 系统电源供电 软件设计软件设计 我们先从main函数讲起 其中涉及的LED指示灯和串口等相关子程序如果之前的章节已 有介绍 则此处不再讲述 本示例涉及的程序都添加了较为详细的注释 串口配置与串口输入输出章节的配置方法相同 不是本示例的重点 请参考相关章节 上面的函数已经打印了复位的原因 此处RCC Cl

7、earFlag 函数的目的是清除上次复位原 因的记录 函数Time Show 是一个while死循环 每秒打印一次系统时间 全局变量TimeDisplay 是否为1 如果为1则打印时间并将请TimeDisplay清0以便它在 stm32f10 x it c 文件的 void RTC IRQHandler void 函数中当发生秒中断时再次置为1 这样便实现了精准的每秒输出时 间一次 其实现如下 Time Show 函数中又调用了两个子函数Time Display 和RTC GetCounter 其中 RTC GetCounter 函数只是简单的读取RTC的Counter寄存器的值 其实现如下

8、而Time Display 函数是实现将RTC GetCounter 读到RTC的Counter寄存器的值幻化为 时分秒的时间信息并打印 其实现如下 其中的中断相关相关函数解释如下 InterruptConfig 函数告诉处理器中断向量表存放的起始地址 STM32支持中断向量 表起始地址动态设置 这个特性在SRAM调试和DFU固件升级时很有用 以为这些情况下中 断向量表起始地址已经不是0 x0000处 此处将中断向量表起始地址设置为内部Flash的起始 地址0 x08000000处 NVIC Configuration 函数实现配置嵌套向量中断中断优先级并使能中断 其中的 NVIC Prior

9、ityGroupConfig 函数配置中断优先级的组织方式 STM32 的嵌套向量中断控制器 可以配置 16 个可编程的优先等级 使用了 4 位表示中断优先级 2 的 4 此方就是 16 16 个可编程的优先等级又可以分为主优先级和次优先级 例如参数 NVIC PriorityGroup 1 表 示 1bit 主优先级 pre emption priority 3 bits 次优先级 subpriority 以下为中断处理函数 请看代码注释 注意其中的对全局变量以下为中断处理函数 请看代码注释 注意其中的对全局变量TimeDisplay的置一与的置一与 Time Show 函数中的清零操作相呼

10、应 是实现精确函数中的清零操作相呼应 是实现精确1秒延时的关键 秒延时的关键 RTC Configuration 其中的中断相关相关函数解释如下 上述多个程序中都调用了以下等待的子函数调用 为什么要不停的等待呢 RTC核完全独立于RTC APB1接口 软件通过APB1接口访问RTC的预分频值 计数器值和 闹钟值 但是 相关的可读寄存器只在与RTC APB1时钟进行重新同步的RTC时钟的上升沿被 更新 RTC标志也是如此的 这意味着 如果APB1接口曾经被关闭 而读操作又是在刚刚重 新开启APB1之后 则在第一次的内部寄存器更新之前 从APB1上读出的RTC寄存器数值可能 被破坏了 通常读到0

11、因此 若在读取RTC寄存器时 RTC的APB1接口曾经处于禁止状态 则软件首先必须等待RTC CRL寄存器中的RSF位 寄存器同步标志 被硬件置 1 注 RTC 的 APB1接口不受WFI和WFE等低功耗模式的影响 Time Adjust 将用户输入的时分秒信息转换为计数器的计数值并对RTC计数器赋值 Time Regulate函数多次调用用户输入函数 请求用户输入时分秒信息并将其转化为计 数数值 用户输入函数USART Scanf 请求用户输入小于等于输入参数的数值并将该值返回 下载与验证下载与验证 神舟IV号光盘 源码 目录包含本实验的工程源码 在神舟IV号光盘 源码 09 简单实时 时钟

12、RTC rar Project 9 简单实时时钟RTC EWARMv5 STM32F107VC ARMJISHU Exe目录下 的ARMJISHU Calendar简单实时时钟 hex文件即为前面我们分析的简单实时时钟实验编译 好的固件 我们可以直接将固件下载到神舟IV号开发板中 观察运行效果 如果使用JLINK下载固件 请按错误 未找到引用源 错误 未找到引用源 错误 未找到引用源 错误 未找到引用源 下载固件 到神舟IV号开发板小节进行操作 如果使用USB下载固件 请按错误 未找到引用源 错误 未找到引用源 错误 未找到引用源 错误 未找到引用源 小节进行操 作 如果使用串口下载固件 请按

13、错误 未找到引用源 错误 未找到引用源 错误 未找到引用源 错误 未找到引用源 小节进行 操作 如果在IAR开发环境中 下载编译好的固件或者在线调试 请按错误 未找到引用源 错误 未找到引用源 错误 未找到引用源 错误 未找到引用源 小节进行操作 如果在MDK开发环境中 下载编译好的固件或者在线调试 请按错误 未找到引用源 错误 未找到引用源 错误 未找到引用源 错误 未找到引用源 小节进行操作 实验现象实验现象 下载后串口会有打样信息输出 如果是第一次运行该程序 则串口会输出提示 RTC not yet configured 然后会要求用户输入时分秒信息 然后就是每秒刷新一次系统时间 如下 图所示 如果上次运行时已经设置了系统时间 在复位重启或者有RTC电池时断电重启后 串口 会输出提示 No need to configure RTC 然后每秒刷新一次系统时间 如下图所示

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 电气安装工程

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号