yanxing
驱动牛犊
驱动牛犊
  • 注册日期2002-12-16
  • 最后登录2004-05-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1582回复:4

请问,在wdm中大家都用什么延时呢?

楼主#
更多 发布于:2003-01-16 09:37
我担心,在一般应用程序中的延时函数不能用,即使能用,也不知道是不是稳定,所以想问大家都是怎么延时的?最好能给出例子,谢谢
lstart
驱动牛犊
驱动牛犊
  • 注册日期2001-08-14
  • 最后登录2004-01-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-01-16 19:03
我担心,在一般应用程序中的延时函数不能用,即使能用,也不知道是不是稳定,所以想问大家都是怎么延时的?最好能给出例子,谢谢


1,for循环,,,,可以,,,
2,KeDelayExecutionThread( KernelMode, FALSE, &DelayTimeout);
3,KeStallExecutionProcessor(50);

比如,,
//向控制寄存器复位标志位置位
m2d_wh(CHIP_CONTROL,(USHORT)(cdata | 0x0004));//Reset
//你想要的延迟,,因为芯片复位需要时间...
KeDelayExecutionThread( KernelMode, FALSE, &DelayTimeout);
//继续对其他寄存器配置...
m2d_wh(CHIP_CONTROL,(USHORT)(cdata & 0xFFF0));//unknown
KeStallExecutionProcessor(50);

lstart
驱动牛犊
驱动牛犊
  • 注册日期2001-08-14
  • 最后登录2004-01-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-01-16 19:08
[quote]我担心,在一般应用程序中的延时函数不能用,即使能用,也不知道是不是稳定,所以想问大家都是怎么延时的?最好能给出例子,谢谢


1,for循环,,,,可以,,,
2,KeDelayExecutionThread( KernelMode, FALSE, &DelayTimeout);
3,KeStallExecutionProcessor(50);

比如,,
//向控制寄存器复位标志位置位
m2d_wh(CHIP_CONTROL,(USHORT)(cdata | 0x0004));//Reset
//你想要的延迟,,因为芯片复位需要时间...
KeDelayExecutionThread( KernelMode, FALSE, &DelayTimeout);
//继续对其他寄存器配置...
m2d_wh(CHIP_CONTROL,(USHORT)(cdata & 0xFFF0));//unknown
KeStallExecutionProcessor(50);

 [/quote]

我想向你提醒第一和第三个方法的缺点....
第一个如果换了cpu,,延时就会不一样,,,,
至于第三个,,,时间太短,,,,小于一个滴答...
Buddha
驱动老牛
驱动老牛
  • 注册日期2001-04-29
  • 最后登录2013-05-18
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望17点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-01-22 12:41

1,for循环,,,,可以,,,
2,KeDelayExecutionThread( KernelMode, FALSE, &DelayTimeout);
3,KeStallExecutionProcessor(50);
 


第三种停顿cpu的处理,不好,ddk不建议频繁使用,做好是用2
但是要注意DelayTimeout为负值
<table style="filter: glow(color=sky blue, strength=10)"> <font color=white> 猫生病了, 老鼠大声朗诵诗集, 并修剪盆花. 猫生病了, 老鼠慢慢刷牙洗脸, 并打扫房间. 猫生病了, 老鼠倚在窗边欣赏夜色, 并对流星许愿. 猫生病了, 老鼠也病了, 它说:"我还是习惯那种时时紧张, 处处小心, 夜夜逃亡的生活." 午夜, 我听到老鼠在叹息, 且不再读诗了. </font></table>
wfeiisch
驱动牛犊
驱动牛犊
  • 注册日期2002-10-17
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-01-23 09:25
这是我用的一个延时例程:
参数为毫秒数!
VOID Sleep(U32 time)
{
    LARGE_INTEGER liTime;


    /* Convert milliseconds to 100-nanosecond increments using:
     *
     *     1 ns  = 10 ^ -9 sec
     *   100 ns  = 10 ^ -7 sec (1 timer interval)
     *     1 ms  = 10 ^ -3 sec
     *     1 ms  = (1 timer interval) * 10^4
     */
    time = time * 10000;

    // Negative value means relative time, not absolute
    liTime = RtlConvertLongToLargeInteger(-(LONG)time);

    KeDelayExecutionThread(KernelMode,
                           TRUE,
                           &liTime);
}

游客

返回顶部