文档章节

Wince的时间精度问题

sinlinx
 sinlinx
发布于 2014/07/09 12:23
字数 436
阅读 46
收藏 0

GetSystemTime()或GetLocalTime(),在wince最多精确到秒级的精度, 那是因为在嵌入式系统里面,系统的时间是由RTC(一般是在CPU内部的一个硬件逻辑)来保持的,它是以秒为单位,每过一秒就自加1来计时.所以它的精确 范围只能到秒.这点你可以在很多BSP的KERNEL里查看OEMGetRealTime()函数的实现就知道了. 当你调用API:GetSystemTime()或GetLocalTime()时,KERNEL会调用OEMGetRealTime()函数来返回给你 结果.而在OEMGetRealTime()里面,基于上述的原因,把ms=0.所以你只能得到秒级的精确度.
  我不清楚PC上是怎么实现这个函数的,但肯定是和硬件相关的
  一 般的CPU还会有一部分叫OSTimer的逻辑功能,它能够提供类似RTC,但是是毫秒精度的计时.在WINCE里,KERNEL有一个CurMSec变 量,这个变量时以毫秒为单位,来保存系统从启动到现在运行了多长时间.实际上CurMSec这个变量是靠OSTIMER来计算的.当你调用 GetTickCount()时,系统会把CurMSec的值返回给你,你可以通过在做某次动作的前后各调用GetTickCount()获得一个时间 差,就是你执行这次动作消耗的时间, 它是毫秒精度的.
  WINCE 微秒、毫秒级延时函数
  //WINCE 微秒级延时函数
  void delay_us(int n){
  LARGE_INTEGER litmp;
  LONGLONG QPart1,QPart2;
  double dfMinus, dfFreq, dfTim;
  if(QueryPerformanceFrequency(&litmp)==FALSE)
  {
  MessageBox(NULL,TEXT("Error:QueryPerformanceFrequency"),TEXT("Error"),MB_OK);
  return;
  }
  dfFreq = (double)litmp.QuadPart;
  QueryPerformanceCounter(&litmp);
  QPart1 = litmp.QuadPart;
  do
  {
  QueryPerformanceCounter(&litmp);
  QPart2=litmp.QuadPart;
  dfMinus=(double)(QPart2-QPart1);
  dfTim=dfMinus/dfFreq;
  }while(dfTim <0.000001*n);
  }
  //毫秒级的延时函数
  void delay_ms(DWORD tmp_time)
  {
  DWORD start;
  DWORD time_i=0;
  start=GetTickCount();
  while(time_i<=tmp_time)
  {
  time_i=GetTickCount()-start;
  }
  }

© 著作权归作者所有

sinlinx
粉丝 0
博文 14
码字总数 13077
作品 0
保定
高级程序员
私信 提问
Lazarus实战开发之数据库SQLite(WIN32/WINCE)

本文来自http://blog.csdn.net/hellogv/ SQLite是一个轻量级的嵌入式数据库,在PC上大可不用它,但是在WINCE上,他就起很大作用了(ACCESS在WINCE上停止升级,SQL CE又太庞大)。 在Lazarus f...

晨曦之光
2012/03/14
1K
0
移植Opencv 1.10到WINCE/WM

本文来自http://blog.csdn.net/hellogv/ ,引用必须注明出处! 上次写了在C#玩OpenSURF的演示,这次就写写如何把opencv1.10移植到wince/WM。因为如果懂得裁剪opencv,那么就可以在更多设备(...

晨曦之光
2012/03/14
355
0
【大连】高薪急聘【嵌入式硬件/软件工程师/底层研发工程师/WinCE系统工程师】

【大连】高薪急聘【嵌入式硬件/软件工程师/底层研发工程师/WinCE系统工程师】 若人选熟悉JD要求的70-80%就可以推荐尝试! 工 资:6K~15K 固定补助、五险一金(公积金32%)、带薪年假、年末奖...

itcherry
2012/02/03
855
0
WinCE 4.2(.net精简框架集)下的图形双缓存处理

在上位机Windows操作平台( .net 2.0框架集)下实现图形双缓存有很多办法,每种办法在上位机都有很好的效果,但是很不幸,在WinCE4.2操作系统(.net 2.0精简框架集)下这些方法要么不支持,要...

刘洪峰iot
2006/11/21
0
0
Wince6.0应用开发:三、小技巧揭秘

在Wince6.0的应用开发过程中,掌握一些使用的小技巧,必定会事半功倍 那么,你做好心里准备了吗?3、2、1。 技巧一:我会告诉你你为Wince开发的程序可以在你的电脑上运行! 这个技巧的用途有...

余二五
2017/11/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

一、docker 入坑(win10和Ubuntu 安装)

前言 终究还是绕不过去了,要学的知识真的是太多了,好在我们还有时间,docker 之前只闻其声,不曾真正的接触过,现在docker 越来越火,很多公司也都开始使用了。所以对于我们程序员而言,又...

quellanan2
26分钟前
4
0
AutoCompleteTextView

小技巧按菜单键 当菜单打开之前会调用onMenuOpened(int featereId,Menu menu),可以重写这个方法,弹出对话框或者Popmenu 再布局中添加控件AutoCompleteTextView. <AutoCompleteTextVie...

逆天游云
29分钟前
4
0
谷歌软件商店:推出5美元会员 可用数百个软件

腾讯科技讯,谷歌和苹果是全球两大智能手机操作系统的运营者,两家公司旗下分别拥有占据行业垄断地位的谷歌软件商店和苹果软件商店。据外媒最新消息,手机软件商店的商业模式正在发生一些变化...

linuxCool
52分钟前
3
0
RocketMQ 多副本前置篇:初探raft协议

Raft协议是分布式领域解决一致性的又一著名协议,主要包含Leader选举、日志复制两个部分。 温馨提示: 本文根据raft官方给出的raft动画进行学习,其动画展示地址:http://thesecretlivesofda...

中间件兴趣圈
52分钟前
3
0
elasticsearch 6.8.0 添加认证

1. 修改elasticsearch-6.8.0/config/elasticsearch.yml 最后添加一行:xpack.security.enabled: true 2. 初始化用户和密码 ./bin/elasticsearch-setup-passwords interactive 我这里初始化为......

coord
54分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部