Chinaunix首页 | 论坛 | 博客
  • 博客访问: 10582
  • 博文数量: 8
  • 博客积分: 320
  • 博客等级: 一等列兵
  • 技术积分: 100
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-06 09:19
文章分类
文章存档

2011年(1)

2009年(7)

我的朋友
最近访客

分类: 嵌入式

2009-08-10 11:28:49

   time.h 头文件提供了关于时间信息表达及操作的函数、数据类型和宏的定义。该头文件提供了两种基本类型的数据:一个是clock_t ,这是基于和处理器执行周期“ticks”相关系从一个指定点开始的数据结构,而另外一种就是time_t。
   time_t数据类型被用于记录从1970年1月1号开始所经过的秒数,这就是通常的日历时间,而在1970年以前的时间则在寄存单元里表现为负数!
日历时间往往被分为多种时间的表示,一种经典的时间表示方法如下结构:
struct tm {

     int tm_sec;           /* seconds after the minute [0,61] */

     int tm_min;           /* minutes after the hour [0,59]   */

     int tm_hour;          /* hours after midnight [0,23]     */

     int tm_mday;          /* day of the month [1,31]         */

     int tm_mon;           /* months since January [0,11]     */

     int tm_year;          /* years since 1900                */

     int tm_wday;          /* days since Sunday [0, 6]        */

     int tm_yday;          /* days since January 1st [0,365]  */

     int tm_isdst;         /* Daylight Saving flag            */

   };

注意:这种 struct tm执行既不支持 the Daylight Saving flag(不明白什么意思,望后来研究者解释) ,也不支持时区。所有的数据都是格林威治时间。

      这个头文件通过设置宏CLOCKS_PER_SEC 来表示每秒中系统的周期数,当然这个宏也可以用于把clock_t转换为秒,一般是用浮点除法把它计算成秒。

      这里提醒各位由于处理器的运算速度往往是细小并呈微动态的,所以定义这个宏的值必须通过大量实验的验证。

      在Blackfin处理器,以下方法可以用于定义宏。

1、通过 -DCLOCKS_PER_SEC= 编译开关,例:-DCLOCKS_PER_SEC=6000000LL

2、通过系统服务库

3、在DSP设置选项Compile\Processor (1) \Processor speed

4、使用 cycles.h来实现。

 

通过包含 实现了实时时钟,但其中的Daylight saving flag 是什么意思,不是很懂,望知道的高手 回帖,或者给我 邮件 xunaco@yeah.net
阅读(308) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~