暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

RTC小议

术道经纬 2019-05-28
232

RTC(Real Time Clock)作为一个常用的外设,可以记录实时时钟数据,即便是在其连接的系统电源关闭的情况下。那要实现上述功能,需要哪些组件呢?

要在电源关闭的情况下还可以正常工作,那就需要一个备用的电池,因为电池提供的能量的很有限的,所以需要尽可能低的功耗。要能保存时钟数据,就需要一段小的RAM。

一个RTC能用多久呢?RTC只有在系统主电源关闭的情况下才会切换到备用电池供电。最极端的情况下,假设主电源一直关闭,备用电池的容量是170mAh,RTC的耗电是5uA,则可以用  。我那用了十年的笔记本电脑,现在只要切断电源重新开机,日历时间就会回到一个初始值,估计就是RTC没电了。

RTC呢说起来也简单,就是保存并显示年,月,日,小时,分钟,秒,可能再加上一个星期几,但是有几个问题也是需要考虑到的:

  1. 闰年(leap year)的问题。闰年是为了弥补因人为历法规定造成的年度天数与地球实际公转周期的时间差而设立的,补上时间差的年份为闰年。它的规则说出来也是蛮绕的,能被4整除但不能被100整除的,能被100整除也能被400整除的,都是闰年,比如2004年和2400年就是闰年,2100年就不是,这个逻辑用代码表达一下大概是这样的

   ( ((year % 4) == 0 &&
(year % 100) != 0) ||
((year % 400) == 0) )

2. 夏令时(Daylight Saving Time)的问题。夏令时是一种为节约能源而人为调整地方时间的制度,一般在天亮早的夏季人为将时间调快一小时,可以使人早起早睡,减少照明量,以充分利用光照资源,从而节约照明用电。各国的具体做法不同,以美国为例,夏令时从每年3月的第2个周日开始,在这一天的凌晨2点将时针往前拨快1小时,也就是从1:59:59秒直接跳到3:00:00。结束是在每年11月的第一个周日,时钟从1:59:59秒跳到1:00:00。

3. 时间格式(Time Form)的问题。这个比较简单,就是采用12小时制(按AM/PM区分)还是24小时制。说到这,我想起以前第一份工作的入职培训,负责培训的HR发邮件说让PM12点之前交作业,我想着PM3点是下午3点,那PM12点应该就是晚上12点吧,那我下午交就可以啊。结果没有按时交成作业,然后我才知道PM12点是指中午的12点。


文章转载自术道经纬,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论