一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 4388|回复: 4
收起左侧

[STM8/STM32] STM32之RTC最佳搭档time.h

[复制链接]
发表于 2015-11-21 20:19 | 显示全部楼层 |阅读模式
很多朋友在处理STM32的RTC实时时间时遇到很大的困难,首先这个是秒计数器,网上很多人把这个类似计数器进行对3600取整得到小时方法虽然可以得到小时分钟和日,但是这个方法不但效率低,闰年闰月还不好处理。事实上,最近研究3264万年历的时候也遇到了这个头痛的问题。经过本人苦苦研究发现:keil已经帮我们完成这个问题!keil里面有个头文件,叫time.h,专门针对32位计数器处理时间,设置时间,而且这个头文件还支持两个地方的时间差计算,自动计算出星期等功能,能够支持从1970年到2108年的时间!更有趣的是,该文件还支持把计数器的值直接打印成字符串输出,下面是本人把这个功能直接打印在液晶屏的结果:
dayin.JPG

在该头文件里面定义了一个结构体:tm,该结构体声明了秒、时、分、日期、月份、年份、该年的天数等变量,而在文件中声明了一个函数:
extern _ARMABI struct tm *localtime(const time_t * /*timer*/) __attribute__((__nonnull__(1)));
这个函数的作用就是输入一个32位计算值,输出一个结构体时间信息,跟这个相反的函数:
extern _ARMABI time_t mktime(struct tm * /*timeptr*/) __attribute__((__nonnull__(1)));
就是输入一个结构体时间信息,输出一个32位计数值,把这个计算值填入STM32的RTC计数器就可以设置时间日期了。另外在里面还有一个函数:
extern _ARMABI unsigned char *asctime(const struct tm * /*timeptr*/) __attribute__((__nonnull__(1)));
这个就是本文开头的功能了!
发表于 2015-11-22 00:35 | 显示全部楼层
看了下还真的有!涨见识了!感谢楼主!
发表于 2015-11-22 08:46 | 显示全部楼层
谢谢提供,学到了新知识!
发表于 2015-11-22 09:50 | 显示全部楼层
恕我迟钝.
有没有程序例子啊?

谢谢!
发表于 2015-11-22 10:11 | 显示全部楼层
一般的C库都有这个的

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-5-11 00:54 , Processed in 0.065457 second(s), 44 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表