资料介绍
我用的是STM32库函数:两个知识点:
一、RTC时钟框图分析(重要)
二、时间是怎样显示出来的(简析)
一、RTC时钟框图分析(重要)
先熟悉一下几个知识点:
1、STM32的实时时钟(RTC)是一个独立的定时器!
2、RTC模块和时钟配置系统(RCC_BDCR寄存器)是在后备区域,即在系统复位火从待机模式唤醒后RTC的设置和时间维持不变。
RTC这章中,对RTC相关的寄存器的操作特别重要,我在这里不解释了,请查阅手册。。
先上图!
RTC时钟框图
RTC时钟框图分为完全独立的两个部分:1、APB1接口部分(用来RTC相关的寄存器);2、RTC核心;
第一部分:APB1接口。注意:这里涉及到寄存器RTC_CRL中的RSF位,这位是寄存器的同步标志,具体内容去看STM32参考手册RTC这一章。
第二部分:RTC核心。
这里分为两个模块:
(1)RTC预分频器模块;
(2)一个32位的可编程计数器;
下面开始分析第二部分:
先给大家介绍下后备区域的几个特别重要的寄存器:
1、RTC_DIV(重要):RTC预分频器余数寄存器。这个寄存器的作用是来获得比秒钟更加准确的时钟(0.1s,0.01s),该寄存器是自减的,用来保存还需要多少个时钟周期获得一个秒信号。这里加上一个公式(STM32参考手册里有):fTR_CLK=fRTCCLK/(PRL[19:0] 1) 到这里是书上的原话~!
解释一下,RTC_DIV寄存器的值是由RTC_PRL(RTC预分频器装载寄存器)提供的,而RTC_DIV寄存器的时钟频率是由RTCCLK提供的(看图)。比如我们把RTC_PRL值设为32767,则RTC_DIV寄存器的值也为32767,他和RTCCLK的时钟频率是一样的(这里根据上面的公式,RTC_PRL加1,则RTC_DIV也加1)。RTCCLK的时钟周期是1/32768(s),也就是每一个RTCCLK的时钟周期,RTC_DIV自减1,直至到1s钟后,被硬件重新装载,也就是1s钟减32768次。那他到底是怎么提供0.1s,甚至是0.01s的呢?
举个例子就明白了。比如我想要得到1.12秒的这个时间,就要求RTC_DIV自减0.12/(1/32768)次。RTC_DIV只得到0.12s的时间,还有1s时间从哪儿来?他是TR_CLK提供的。这个问题会在下文讲解。
2、RTC_PRL:RTC预分频装载寄存器。
这个寄存器有两个作用:
(1)提供给RTC_DIV的重新装载值;
(2)设置时钟分频系数。
第一个作用不讲了。第二个作用:设置时钟分频系数。比如我们使用32.768KHz的晶振作为时钟输入,那么我们配置这个寄存器值位32767,就可以得到1s钟的计数频率(32768/(32767 1),单位(HZ))。
3、RTC_CNT(重要):RTC计数器寄存器。这个寄存器较简单,用来记录秒钟值。如果之前对RTC_CR(控制寄存器),的相关中断允许位配置的话,RTC_CNT寄存器可以产生一个溢出中断。
4、RTC_ALR:RTC闹钟寄存器。从图中就可以看出来,很简单。用来标记闹钟产生时间,如果RTC_CNT的值和RTC_ALR的值相等的话,并使能中断的话(在RTC_CR(控制寄存器)中配置),会产生一个闹钟中断。
后备区域的寄存器就给大家介绍到这儿。相比大家通过上面的介绍结合框图,头脑里面应该有个大致流程了吧。没有~!?卧槽~那就给大家理一遍思路
首先外部加进来一个时钟信号RTCCLK(32.768K),然后设置RTC_PRL的分频系数为32767,得到一个秒时钟信号TR_CLK(1HZ)。当TR_CLK每过一个时钟周期,产生一个RTC_Second(秒钟中断),同时RTC_CNT计数器(记录秒值)加1。如果要求更精准的时间,还可以在RTC_CR寄存器的RSF位被置1时去读RTC_DIV的值。
二、时间是怎样显示出来的(简析)
主函数中有这么两条语句:
LCD_ShowString(60,130,200,16,16," - - "); ①
LCD_ShowString(60,162,200,16,16," : : "); ②
在看这三条语句(这里统称”中间三条语句“):
LCD_ShowNum(60,130,calendar.w_year,4,16);
LCD_ShowNum(100,130,calendar.w_month,2,16);
LCD_ShowNum(124,130,calendar.w_date,2,16);
和这三条语句(这里统称”最后三条语句“):
LCD_ShowNum(60,162,calendar.hour,2,16);
LCD_ShowNum(84,162,calendar.min,2,16);
LCD_ShowNum(108,162,calendar.sec,2,16);
很显然,中间三条语句是显示年月日的对应①,最后三条语句是显示时分秒的对应②。这些结构体成员都在初始化函数(RTC_Init();)中被赋值了,怎么赋值的,大家自己去研究吧。然后在硬件中,TR_CLK的每个时钟周期都会触发秒中断,在秒中断服务函数中又对时间进行了更新。
想显示时间,是不是先得设置一个基础时间,然后让系统在基础时间上,进行自加。
第一步:设置一个基础时间。在对时钟进行配置时(在初始化函数(RTC_Init();中配置),里面有个RTC_Set();函数,此函数会你设置的年月日时分秒进行计算,算出从1970年到你设置那个时刻总共是多少秒(这博主也不知道为什么是1970年),然后把算出来的这个秒值赋给RTC_CNT计数器作为初值。
第二步:系统自己更新时间(自加)。时间是怎么更新的,这里给大家简单提一下。。在更新函数(RTC_Get();)中,首先会读取RTC_CNT计数器中的值,然后经过一番倒计算,计算出年月日时分秒和星期,分别赋值给那些时间的结构体变量。于是在主函数的while(1)中,会不断的被秒中断刷新时间,并显示在LCD上。
这样,一个完整的时钟就显示在LCD屏幕上了。大功告成!
转自:
(mbbeetchina)
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- bq32000实时时钟(RTC)数据表
- BQ32002实时时钟(RTC)数据表
- bq3285实时时钟(RTC)数据表
- 基于STM32单片机RTC实时时钟使用库文件设计 5次下载
- DA1468x SoC 的实时时钟(RTC) 概念
- STM32CubeMX系列|RTC实时时钟
- stm32f4 RTC实时时钟解析
- STM32-(27):RTC实时时钟
- STM32CubeMX | 40 - 实时时钟RTC的使用(日历和闹钟)
- ABB-RTU560实时时钟模块560RTC01 7次下载
- STM32F030_RTC实时时钟相关的知识资料下载
- 使用STM32F103RB单片机实现RTC实时时钟实验的资料详细说明 11次下载
- 实时时钟RTC的程序应用设计和详细资料免费下载 13次下载
- ALIENTEK_MINISTM32_实验11_RTC实时时钟实验 17次下载
- STM32F2技术培训_实时时钟_RTC 0次下载
- TCXO RTC实时时钟模块的特性 415次阅读
- RTC实时时钟的基本概念和工作原理 3913次阅读
- 基于FPGA的RTC实时时钟系统设计 1325次阅读
- 一文看懂RTC实时时钟 4589次阅读
- 为实时时钟选择备份源 836次阅读
- 采用Maxim实时时钟的晶体考虑因素 512次阅读
- 业界转向MEMS以获得精确的实时时钟 1370次阅读
- 如何利用Arduino UNO设计无RTC模块简单时钟 4423次阅读
- 实时时钟的硬件结构_实时时钟故障怎么解决 7224次阅读
- 微雪电子RTC 时钟模块 DS1302简介 3402次阅读
- dfrobotI2C DS1307 RTC实时时钟模块介绍 5133次阅读
- STM32单片机中RTC的秒中断的原理解析 1.4w次阅读
- 一文看懂rtc实时时钟和单片机时钟的区别 6.1w次阅读
- 实时时钟芯片有哪些_实时时钟芯片选型介绍 4w次阅读
- 实时时钟芯片应用设计时必须要考虑的事项 5546次阅读
下载排行
本周
- 1TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 2开关电源基础知识
- 5.73 MB | 6次下载 | 免费
- 3100W短波放大电路图
- 0.05 MB | 4次下载 | 3 积分
- 4嵌入式linux-聊天程序设计
- 0.60 MB | 3次下载 | 免费
- 5基于FPGA的光纤通信系统的设计与实现
- 0.61 MB | 2次下载 | 免费
- 6基于FPGA的C8051F单片机开发板设计
- 0.70 MB | 2次下载 | 免费
- 751单片机窗帘控制器仿真程序
- 1.93 MB | 2次下载 | 免费
- 8基于51单片机的RGB调色灯程序仿真
- 0.86 MB | 2次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33564次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21548次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6653次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537796次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191185次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183278次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多