STM32-BKP备份寄存器&RTC实时时钟

一、原理

Unix:

 一些系统是使用32bit有符号数存储,实际范围为-2,147,483,648到2,147,483,647‌即2^{31}-1~-2^{31}

经过计算int32数据会在2038年1月19日溢出,可以看到转换的为北京时间。

STM32的时间戳为无符号时间戳。

我们需要把秒计数器的时间通过计算得到秒技术其对应的时间,然后根据时区进行偏移(考虑到品平年闰年,大月小月闰月等)。

可以根据c语言官方函数直接计算:

 UTC、GMT

 GMT是之前的时间标准,UTC是计算了偏移量的现行标准。中国一般使用GMT+8/UTC+8。Unix时间戳没有闰秒,即协调世界时间的功能,所以可能秒数会偏差。

 时间戳和日期进行转换(数据类型):

 time_t实际上是int64类型,用来存储秒计数值

 

 tm类型为定义日期的结构体:struct tm

其中year为从1900年的第几年(最小应该为70);mon月份从0开始;wday表示周几;yday表示每年的第几天;isdst是否使用夏令时,1表示用,0不用,-1表示不知道。

 夏令时为在夏天的某段时间将时间提前一个小时。

 实际使用:

 mktime函数原理,通过输入的年月日时分秒计算,其他参数会自动计算回填,可以通过此函数自动计算星期。

 strftime函数参数(char *c,size_length,const *char,const struct tm*),其中const *char为格式字符串。函数使用为,将const struct tm*的内容通过const *char格式化字符存入长度为size_length的数组char *c中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值