单片机RTC及时钟芯片的时间到底从哪一年起始?

这篇具有很好参考价值的文章主要介绍了单片机RTC及时钟芯片的时间到底从哪一年起始?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

实时时钟RTC在嵌入式系统中是常用的功能,有的单片机有RTC功能,也有专用的RTC芯片,如DS1302、DS1307等。但RTC的“年寄存器”长度有限,一般不会包含所有年份,都是从0开始,到某个数字结束。这个开始的年份“0”到底是哪一年呢?很多人说是1970年1月1日开始,真是这样吗?
没有调查就没有发言权,本文笔者将测试多种单片机,使用内部RTC功能,以及专用的RTC芯片,考证单片机RTC及常用时钟芯片的时间到底从哪一年起始。
要讨论RTC等等时间从哪一年开始,需要用到历法知识,我们需要在特殊的时间点检验RTC的时间是如何变化的,比如闰年的闰月2月28日23:59:59秒之后,时间变成了哪一天。

二、实验测试

1.STM32F103系列内部RTC功能

在STM32F103单片机内部RTC实时时钟驱动程序中,我们讨论了STM32F103C8T6单片机内部RTC功能,该功能只有一个计数器,每1秒加1,没有年月日及时间寄存器,读取计数器的值后,需要使用软件计算出时间,才能实现日历、时钟功能,软件算法需要考虑历法中的闰年等特殊情况,因此,可得出结论:STM32F103系列内部RTC没有具体的起始时间,起始时间由软件算法确定;在前述的博文中,选择用UTC时间戳(以1970年1月1日00:00:00为开始时间),可以使程序通用性更强。

2.STM32F407系列内部RTC功能

该型号芯片是STM32具有完整RTC功能的代表,先看F407数据手册中关于RTC的描述:
单片机RTC及时钟芯片的时间到底从哪一年起始?,单片机,嵌入式,单片机,mcu
这与F103不同,RTC具有完整的时间、日历寄存器,再看各寄存器的大小:
单片机RTC及时钟芯片的时间到底从哪一年起始?,单片机,嵌入式,单片机,mcu
单片机RTC及时钟芯片的时间到底从哪一年起始?,单片机,嵌入式,单片机,mcu
我们只需要关心年份寄存器的大小即可,由红框中的描述可知,年份只能表示2位十进制数,即0~99。日期寄存器上电复位值为0x0000 2101,对应00年1月1日星期1,还有时间寄存器(详见手册)复位值为0x0000 0000,对应时间为00:00:00。
接下来,我们使用STM32F407VGT6,首次上电后,不进行RTC的初始化配置,直接读取寄存器,通过串口输出,看看时间如何:
单片机RTC及时钟芯片的时间到底从哪一年起始?,单片机,嵌入式,单片机,mcu

可看出时间确实是从00年1月1日00时00分00秒,星期一开始的,与手册一致。把时间设置为00-02-28 23:59:50,星期几忽略,看10秒后时间如何变化:
单片机RTC及时钟芯片的时间到底从哪一年起始?,单片机,嵌入式,单片机,mcu
时间变成了2月29日,看来是把00年当作闰年处理;再把时间设置为01-02-28 23:59:50,星期几忽略,看10秒后时间如何变化:
单片机RTC及时钟芯片的时间到底从哪一年起始?,单片机,嵌入式,单片机,mcu
时间变为3月1日,是平年。
测试发现,00~99之间可被4整除的年份都被当作闰年,其他年份为平年,不再贴图。

3.瑞萨R5F100内部RTC功能

R5F100FE是瑞萨RL78/G13系列较常用的芯片,对RTC功能的描述如下:
单片机RTC及时钟芯片的时间到底从哪一年起始?,单片机,嵌入式,单片机,mcu
手册中直接说最长计数达到99年,再看年计数寄存器的描述:
单片机RTC及时钟芯片的时间到底从哪一年起始?,单片机,嵌入式,单片机,mcu
这就比较明朗了,年是从00开始,最多到99,而且认为年份可整除4是闰年,与STM32F407相同。根据手册的描述,复位时,寄存器初始化为00年1月1日00:00:00,星期日(手册中说明,星期寄存器初始化为0,对应星期日):
单片机RTC及时钟芯片的时间到底从哪一年起始?,单片机,嵌入式,单片机,mcu
同样,把时间设置为00-02-28 23:59:50,星期几忽略,看10秒后时间如何变化:
单片机RTC及时钟芯片的时间到底从哪一年起始?,单片机,嵌入式,单片机,mcu
时间变为2月29日,即00年当做闰年处理;再把时间设置为01-02-28 午夜,时间如何变化:
单片机RTC及时钟芯片的时间到底从哪一年起始?,单片机,嵌入式,单片机,mcu
时间变为3月1日,是平年。
测试发现,00~99之间可被4整除的年份都被当作闰年,其他年份为平年,不再贴图。

4.时钟芯片DS1302

DS1302手册中描述如下,带闰年补偿功能,可到2100年:
单片机RTC及时钟芯片的时间到底从哪一年起始?,单片机,嵌入式,单片机,mcu
再看相关寄存器,年寄存器只能表示BCD码格式的2位数,00~99年,如下图:
单片机RTC及时钟芯片的时间到底从哪一年起始?,单片机,嵌入式,单片机,mcu
笔者的这份手册中,没有说明各寄存器的初始值是多少,我们通过读取寄存器的值来查看,和前述方法一样,不做任何设置,直接读取寄存器,通过串口输出:
单片机RTC及时钟芯片的时间到底从哪一年起始?,单片机,嵌入式,单片机,mcu
可知DS1302在首次上电复位时,寄存器被初始化为00年1月1日00:00:00,星期一,与STM32F407相同。接下来,把时间设置为00-02-28 23:59:50,星期几忽略,看时间如何变化:
单片机RTC及时钟芯片的时间到底从哪一年起始?,单片机,嵌入式,单片机,mcu
时间变成了2月29日,与STM32F407、R5F100FE一样,是把00年当作闰年处理;再把时间设置为01-02-28 23:59:50,星期几忽略,看时间如何变化:
单片机RTC及时钟芯片的时间到底从哪一年起始?,单片机,嵌入式,单片机,mcu
时间变为3月1日,是平年。
测试发现,和STM32F407、R5F100FE一样,00~99之间可被4整除的年份都被当作闰年,其他年份为平年,不再贴图。

5.时钟芯片DS1307

D31307是IIC接口的设备,除此之外,与DS1302有非常多的相似之处,都有闰年补偿功能,可计时到2100年,以下是DS1307的主要寄存器:
单片机RTC及时钟芯片的时间到底从哪一年起始?,单片机,嵌入式,单片机,mcu可看出,寄存器除了地址不同外,其他基本功能类似;在手册中有明确的说明,首次上电,寄存器被初始化为00年1月1日00:00:00,星期一,如下:
单片机RTC及时钟芯片的时间到底从哪一年起始?,单片机,嵌入式,单片机,mcu单片机RTC及时钟芯片的时间到底从哪一年起始?,单片机,嵌入式,单片机,mcu
同样,把时间设置为00-02-28 23:59:50,星期几忽略,时间会切换为2月29日:
单片机RTC及时钟芯片的时间到底从哪一年起始?,单片机,嵌入式,单片机,mcu
经测试,DS1307与DS1302、STM32F407以及R5F100FE一样,将00~99之间可被4整除的年份都被当作闰年,其他年份为平年,不再贴图。

三、总结

1.文中用到的设备,初始年份大多为00年,即四位年份yyyy格式的后两位,且当作闰年处理,如果是指1970年的话,1970年不是闰年;无论是单片机还是RTC专用芯片,没有一个手册中提到1970年1月1日这个时间,因此,说RTC功能的起始时间是1970-01-01 00:00:00的,不准确,也没有依据;认为单片机的RTC及时钟芯片时间从1970年1月1日00:00:00开始,是因为这个时间点是Unix时间戳的起始时间,在很多计算机系统和编程语言中被广泛使用;但RTC和时钟芯片的实际初始时间可能会因不同的硬件设备、制造商或系统设计而有所差异,因寄存器大小的限制,一般只计时0~99年的范围,而起始时间,实际上可由使用者自己规定;
2.对于类似STM32F103C8T6这样,RTC功能只有一个计数器,没有年月日时分秒这种时间寄存器的,需要由软件算法配合来计时,起始时间可以任意;
3.对于计时范围00~99年的设备,每4年为一个闰年,在前后100年范围内可用,但要注意的是,并不是每个整百年都是闰年,例如,2000年是闰年,但是1900年、2100年就不是闰年,因此这种情况不能单纯的将年份加1900或者2000处理,而是要经过特殊处理,可以看出,这些器件都是为本世纪设计的;如果时间来到下一世纪2100年,这些芯片没有升级换代,有程序员把00年直接当做2100年而且没经过特殊处理,是会出问题的;当然,有摩尔定律在,70多年后,这种情况是不会发生的,因为那时候这些芯片应该不存在了;
4.以上结论仅基于所述的种类有限的设备,经过测验得出,可能以偏概全了;如果有人做过更深入的研究,或者是做芯片相关功能设计的,欢迎批评指正。文章来源地址https://www.toymoban.com/news/detail-814538.html

到了这里,关于单片机RTC及时钟芯片的时间到底从哪一年起始?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 51单片机实验三:数码管显示时钟 按键调节时间时闪烁提示

    51单片机实验三:数码管显示时钟 按键调节时间时闪烁提示

    功能效果:1.时分秒的动态显示。2.用三个按键实现时分秒的修改,调节的数字闪烁提示。  

    2024年02月11日
    浏览(14)
  • C51单片机的电子时钟(数码管显示+独立按键模块修改及暂停时间)

    C51单片机的电子时钟(数码管显示+独立按键模块修改及暂停时间)

    IMG_1120 通过查看这三个原理图我们可以得知控制K1、K2、K3及K4是通过P31、P30、P32及P33来实现的,控制8个数码管是P22、P23及P24来实现, 控制发光二极管则由P00-P07来实现。 代码分为三部分分别为main.c、key.h、key.c scankey()函数的主要代码,通过软件入手提高系统的可靠性,防止外

    2024年02月05日
    浏览(7)
  • 关于单片机的时钟浅谈及STM32F103/F030单片机的内外时钟切换问题

    关于单片机的时钟浅谈及STM32F103/F030单片机的内外时钟切换问题

    本文主要讲解单片机的时钟系统的相关知识,并进行超频测试,同时介绍如何在STM32F0单片机上进行内外时钟的切换,在不使用外部晶振或者外部晶振不启动时自动切换内部时钟的方法。 问题来源于群里的一次问答: 诚然,当使用固件库时,把外部晶振摘掉,系统确实会自动

    2024年02月15日
    浏览(9)
  • 单片机数字时钟/闹钟

    单片机数字时钟/闹钟

    1.设计概述: 由单片机 AT89C51芯片和动态数码显示管为核心,辅以必要的电路,构成一个数字时钟。 时钟显示方式为:时-分-秒。时钟计时周期为24小时,显满刻度为“23时59分59秒”。 具有调整功能。设置有三个按键,分别对时、分、秒进行调整校对。 外加可当闹钟使用,闹钟

    2024年02月11日
    浏览(7)
  • 51单片机数字时钟

    51单片机数字时钟

    我们学单片机,一般都会写数字时钟编程。它能帮助我们: a. 能够系统性地总结掌握的知识,将单元模块知识有机的结合在一起。 b. 能够充分协调好硬件与软件之间的相互结合,合理设计硬件电路。 c. 掌握单片机 C 语言判断语句、分支语句以及子程序调用等编程知识。

    2024年02月11日
    浏览(6)
  • 单片机原理与应用课程设计-基于51单片机的时钟日历

    单片机原理与应用课程设计-基于51单片机的时钟日历

    摘 要 本课程设计是基于51单片机的日历时钟设计。作为嵌入式系统中常用的控制器,单片机在各种电子设备和系统中广泛应用。日历时钟作为一个常见的功能模块,在现代生活中具有重要意义。因此,设计一个基于51单片机的日历时钟,不仅有助于我们掌握单片机编程技术和

    2024年02月20日
    浏览(32)
  • 51单片机实时时钟显示

    51单片机+DS1302+DS18B20+LCD12864 用的IIC通信,写的一个ds3231时钟模块的程序,可更改时间,下面是.h文件里面的部分代码 #ifndef __ds3231_h #define _ ds3231_h #include reg51.h #define uchar unsigned char #define uint unsigned int extern uchar day2,Htemp2,Mtemp2,Stemp2; //星期,时分秒 extern ucharYtemp2,Mtemp2,Dtemp2,Ttem

    2024年02月09日
    浏览(9)
  • 单片机-定时器时钟

    单片机-定时器时钟

    89C52RC 1.定时器0,lcd1602显示时间。    main.c

    2024年02月11日
    浏览(7)
  • 基于单片机的电子时钟

    基于单片机的电子时钟

    点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87453487 源码获取 本次设计由于前期我们已经完成了单片机最小系统的制作,为了节省时间,故利用已有资源,选择用单片机最小系统来实现数字钟的制作。采用的是以单片机芯片为核心,辅以必

    2024年02月04日
    浏览(6)
  • 基于单片机的电子时钟设计

    基于单片机的电子时钟设计

    收藏和点赞,您的关注是我创作的动力   电子时钟具有长远的发展历史,它的出现使得人们对时间的概念有了进一步的认知和了解,可以说意义十分的重大。在时代的推动,以及市场的需求下,电子时钟的功能以及性能都有着质的突破,而且应用的范围也越来越广,到处都

    2024年02月04日
    浏览(7)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包