zoukankan      html  css  js  c++  java
  • windows下实现微秒级的延时

     

    windowsintegeriostream汇编嵌入式任务

    最近正在做一个嵌入式系统,是基于windows ce的,外接硬件的时序要微秒级的延时.
    1.微秒级的延时肯定不能基于消息(SetTimer函数),因为一出现消息堵塞等就会影响精
    度,而且setTimer单位才是毫秒.实际响应时间可能要到55毫秒左右.
    2.微秒级的延时也不能不能基于中断,VxD最快的时钟服务程序Set_Global_Time_Out函数
    才能保证1毫秒的精度.其他挂接int 8H中断处理函数等,只能保证55ms的精度.(有时还不
    能)
    3.因此可以想到汇编下的那种基于循环执行语句的那种延时.但汇编那种代码不通用,跟
    cpu的频率有关.
    所以可以用windows下的几个函数来写出通用代
    码.GetTickCout,timeGetTime,QueryPerformanceCounter.
    1)GetTickCout响应只能保证55ms的精度
    2)timeGetTime只能保证1ms的精度
    3)而QueryPerformanceCounter函数不依赖计算中断的次数,而是靠读取别的硬件时钟来
    实现的,可以有0.8微秒的精度.这个系统不支持windows 95以下的系统,不过这些系统应
    该没人用了吧.呵呵.
    下面是示例代码:

    Code


    因为windows是多任务系统,只要保证windows执行这段代码时不被其他进程打断,就可以
    保证延时微秒级成功.出现打断的几率很小.一般可以不考虑.如果代码执行时间低于一
    个时间片,那就100%不会被打断了.

  • 相关阅读:
    20170411linux常用命令
    20170411oracle常用命令
    20170411-oracle 查询指定节点下的所有子节点包括直到叶子节点
    20170329oracle安装教程
    20170329plsql连接oracle
    20170329001怎么让plsql窗口列表保持
    Eclispse 换主题、皮肤、配色,换黑色主题护眼
    zbb20170303使用ssh一直找不到session,报错not found session in current thread
    zbb20170303_ant_build.xml详解
    hdu Farm Irrigation
  • 原文地址:https://www.cnblogs.com/sczw-maqing/p/3363957.html
Copyright © 2011-2022 走看看