4198|8

72

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

GetLocalTime取得的系统时间里面毫秒一直为0 [复制链接]

在模拟器上运行的,一直为0.
不支持那么精确?

有没有其他的取得方法?谢谢

最新回复

好,我晚上回去试一下GetTickCount。 我现在用的硬件环境是ARM9。希望他的滴答就是1MS。这样还是可以满足我的。  详情 回复 发表于 2010-3-22 14:20
点赞 关注

回复
举报

53

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
有没有设置定时器啊,没代码如何分析?
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
GetLocalTime中的ms,需要底层的支持,一般实现时都只支持到s,ms是不支持的。
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

4
 

  1. //------------------------------------------------------------------------------
  2. //
  3. //  Function:  OEMGetRealTime
  4. //
  5. //  Reads the current RTC value and returns a system time.
  6. //
  7. BOOL OEMGetRealTime(SYSTEMTIME *pTime)
  8. {
  9.     BOOL rc = FALSE;
  10.     S3C2410X_RTC_REG *pRTCReg;
  11.     UINT32 data;
  12.     UINT16 seconds;


  13.     OALMSG(OAL_RTC&&OAL_FUNC, (L"+OEMGetRealTime(pTime = 0x%x)\r\n", pTime));

  14.     if (pTime == NULL) goto cleanUp;
  15.    
  16.     // Get uncached virtual address
  17.     pRTCReg = OALPAtoVA(S3C2410X_BASE_REG_PA_RTC, FALSE);
  18.     do {
  19.         data = INPORT32(&pRTCReg->BCDSEC) & 0x7f;
  20.         seconds = FROM_BCD(data);
  21.         data = INPORT32(&pRTCReg->BCDYEAR);
  22.         pTime->wYear = FROM_BCD(data) + RTC_YEAR_DATUM;
  23.         data = INPORT32(&pRTCReg->BCDMON) & 0x1f;
  24.         pTime->wMonth = FROM_BCD(data);
  25.         data = INPORT32(&pRTCReg->BCDDAY) & 0x3f;
  26.         pTime->wDay = FROM_BCD(data);
  27.         pTime->wDayOfWeek = (WORD)INPORT32(&pRTCReg->BCDDATE) - 1;
  28.         data = INPORT32(&pRTCReg->BCDHOUR) & 0x3f;
  29.         pTime->wHour = FROM_BCD(data);
  30.         data = INPORT32(&pRTCReg->BCDMIN) & 0x7f;
  31.         pTime->wMinute = FROM_BCD(data);
  32.         data = INPORT32(&pRTCReg->BCDSEC) & 0x7f;
  33.         pTime->wSecond = FROM_BCD(data);
  34.         pTime->wMilliseconds = 0;
  35.     } while (pTime->wSecond != seconds);

  36.     // Done
  37.     rc = TRUE;

  38. cleanUp:
  39.     OALMSG(OAL_FUNC, (L"-OEMGetRealTime(rc = %d)\r\n", rc));
  40.     return rc;
  41. }
复制代码

可以看到,模拟器RTC中的毫秒都是0.所以,你应用获取到的也都是0了。

如果要ms级的,可以考虑用GetTickCount().
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

5
 
嗯。我用GetLocalTime读取的时间,ms一直是0的。只支持到s。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

6
 
GetLocalTime看来是不能精确到毫秒了。
而且以前也讨论过这个问题.(http://topic.eeworld.net/t/20050713/21/4142850.html)

但是使用GetTickCount()的话,是否和系统时钟有关系?是否也会产生误差,
目前我需要能判断出0.05秒。

谢谢
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

7
 
GetTickCount()是ms级的,误差肯定有,你可以试试看是否满足自己的需求。
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

8
 
GetTickCount吧。不过有误差。以前用来做秒表。在ce上用过很多方法,都不精确。不知道是平台原因还是ce原因
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

9
 
好,我晚上回去试一下GetTickCount。

我现在用的硬件环境是ARM9。希望他的滴答就是1MS。这样还是可以满足我的。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表