首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在WinXP下获得准确的1ms计时器滴答

在Windows XP系统下,获取准确的1ms计时器滴答需要使用高精度计时器。以下是一些建议:

  1. 使用QueryPerformanceCounter函数:QueryPerformanceCounter是一个高精度计时器,可以提供较高的时间分辨率。使用方法如下:
代码语言:c
复制
#include<windows.h>
#include<stdio.h>

int main()
{
    LARGE_INTEGER frequency;
    LARGE_INTEGER start;
    LARGE_INTEGER end;

    QueryPerformanceFrequency(&frequency);
    QueryPerformanceCounter(&start);

    // 您的代码

    QueryPerformanceCounter(&end);
    double elapsedTime = (double)(end.QuadPart - start.QuadPart) / frequency.QuadPart * 1000;

    printf("Elapsed time: %f ms\n", elapsedTime);
    return 0;
}
  1. 使用Multimedia Timer:Windows Multimedia Timer是一个高精度计时器,可以提供较高的时间分辨率。使用方法如下:
代码语言:c
复制
#include<windows.h>
#include <mmsystem.h>
#include<stdio.h>

int main()
{
    UINT wTimerRes = 1;
    MMRESULT result = timeBeginPeriod(wTimerRes);

    DWORD start = timeGetTime();

    // 您的代码

    DWORD end = timeGetTime();
    timeEndPeriod(wTimerRes);

    double elapsedTime = (double)(end - start);

    printf("Elapsed time: %f ms\n", elapsedTime);
    return 0;
}

请注意,Windows XP系统已经过时,可能无法支持某些新的功能和库。因此,建议您升级到更新的操作系统,以获得更好的兼容性和安全性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

SysTick 定时器

这个72000就可以作为系统滴答定时器初始值,将这个值写入系统滴答定时器,定时器在每个时钟周期减1,减到0时,就刚好是1ms,同时产生中断通知,再次加载72000如此反复。...系统滴答定时器控制寄存器比较少,整体比较简单,借助本次机会详细分析一寄存器和HAL之间是调用关系。...NVIC,而“HAL_SYSTICK_Config()”函数使能是SysTick; 为了方便修改SysTick初始值,这里定义几个常见延时周期,代码段 11.3.4 所示。...创建延时函数“SysTickDelay()”,在该函数里设置自定义全局变量systick_t初始值,SysTick每计数完一次则进入SysTick中断,将全局变量systick_t值减1,代码段...通过LED展示SysTick延时结果不够严谨,有条件读者可以使用示波器或逻辑分析仪测试LED灯对应引脚(PB0,在J21_3引出)翻转时间,如图 11.4.1 所示,分别修改延时时间10us、1ms

1.5K20

HAL库与Cubemx系列|Systick-系统滴答定时器详解

在以前,大多操作系统需要一个硬件定时器来产生操作系统需要滴答中断,作为整个系统时基。...例如,为多个任务许以不同数目的时间片,确保没有一个任务能霸占系统;或者把每个定时器周期某个时间范围赐予特定任务等,还有操作系统提供各种定时功能,都与这个滴答定时器有关。...SysTick 最大使命,就是定期地产生异常请求,作为系统时基。OS 都需要这种“滴答” 来推动任务和时间管理。欲使能 SysTick 异常, 则把 STCSR.TICKINT 置位。...好家伙,转了十万八千里,最终还是在Systick中断中进行增加,默认配置是Systick 1ms中断,这下知道了我们调用HAL_Delay(),为什么是1ms了吧,绕了那么一大圈,是不是有点想打人呢...默认配置1ms中断周期,那我们HAL_Delay()最小单位是1ms,如果想获得1us中断周期,该如何调整呢?且往下看,这是我们自定义systick周期配置函数,一步一步来看 ?

2.5K52
  • 深入研究 Node.js 回调队列

    那么,事件循环是按照什么样顺序从队列中选择回调函数呢? 首先,让我们看一回调队列五种主要类型。...回调队列类型 IO 队列(IO queue) IO操作是指涉及外部设备(计算机硬盘、网卡等)操作。常见操作包括读写文件操作、网络操作等。...计时器队列(Timer queue) 每个涉及 Node.js 计时器功能[1]操作( setTimeout() 和 setInterval())都是要被添加到计时器队列。...在 Node.js 将回调函数添加到计时器队列之前,setTimeout 在后台花费 1ms。 现在,while 操作(同步)需要 3ms。...事件循环会确定将要在每次迭代中接下来要执行回调函数。 了解队列如何在 Node.js 中工作,使你对其有了更好了解,因为队列是环境核心功能之一。

    3.8K10

    传说中死亡ping

    一般玩电脑对这个PING命令很熟悉。首先说一什么是ping。ping是windows自带一种命令工具。一般是用来检测网络是否通畅,是否存在网络连接问题等。 那怎样运用呢?...以WinXP为例,在一种叫做命令提示符窗口中运行。(在Win9x中叫DOS窗口)单击“开始”,点击“运行”,输入“CMD”,打开命令提示符。先说几个简单。...Sent=4 Received=4 Lost=0 0% loss Approximate round trip times in milli-seconds Minimum=0ms Maxiumu=1ms...Packets Sent=4 Received=4 Lost=0 Approximate round trip times in milli-seconds Minimum=1ms Maximum=9ms...获取IP方法有很多,比如使用彩虹QQ,IPsniper等,还有一个命令[netstat -n],具体怎么用就免了。至于获得对方IP地址还有什么用处,你自己想吧,这里就不引导你做坏事了。

    85510

    .NET 中如何实现高精度定时器

    硬件计时器由三个部分组成:时钟周期生成器、计数时钟周期计数器和检索计数器值方法。 这三个分量特征决定了QueryPerformanceCounter (QPC)分辨率、精度、准确性和稳定性。...默认情况,Windows系统计时器精度为15ms左右。如果是线程阻塞,出让其时间片进行等待,然后再被调度运行时间至少是一个时间切片15ms左右。...Windows系统API提供了timeBeginPeriod可以把计时器精度修改到1ms,在使用计时器服务之前立即调用timeBeginPeriod,并在使用完计时器服务后立即调用timeEndPeriod...从Windows 10, version 2004开始,只有调用timeEndPeriod进程受到影响。 设置更高精度可以提高等待函数中超时间隔准确性。...设置更高分辨率不会提高高分辨率性能计数器准确性。 通常我们使用Thread.Sleep来挂起线程等待,Sleep参数最小为1ms,但实际上很不稳定,实测发现大部分时候稳定在阻塞2ms。

    34110

    .NET中如何实现高精度定时器

    硬件计时器由三个部分组成:时钟周期生成器、计数时钟周期计数器和检索计数器值方法。...默认情况,Windows系统计时器精度为15ms左右。如果是线程阻塞,出让其时间片进行等待,然后再被调度运行时间至少是一个时间切片15ms左右。...Windows系统API提供了timeEndPeriod可以把计时器精度修改到1ms,在使用计时器服务之前立即调用timeEndPeriod,并在使用完计时器服务后立即调用timeEndPeriod。...从Windows 10, version 2004开始,只有调用timeEndPeriod进程受到影响。 设置更高精度可以提高等待函数中超时间隔准确性。...设置更高分辨率不会提高高分辨率性能计数器准确性。[2] 通常我们使用Thread.Sleep来挂起线程等待,Sleep参数最小为1ms,但实际上很不稳定,实测发现大部分时候稳定在阻塞2ms。

    30110

    使用系统定时器SysTick实现精确延时微秒和毫秒函数

    SysTick定时器简介 SysTick定时器是存在于系统内核一个滴答定时器,只要是ARM Cortex-M0/M3/M4/M7内核MCU都包含这个定时器,它是一个24位递减定时器,当计数到 0...如果SysTick初始化为: SysTick_Config(SystemCoreClock / 1000); //定时1ms 即SysTick定时器每1ms中断一次,如果我们定义全局变量,然后在中断函数中...fac_us=0; //us延时倍乘数 uint32_t fac_ms=0; //ms延时倍乘数,在ucos,...void delay_ms(uint32_t nms) { SysTick_Config(SystemCoreClock / 1000); //定时1ms...有了精确延时函数,那么使用通用GPIO软件模拟一些通信协议,IIC、SPI等串行协议,就可以驱动很多硬件设备了,EEPROM、温湿度传感器、显示屏等等。

    2.3K20

    【STM32F407DSP教程】第48章 STM32F407中值滤波器实现,适合噪声和脉冲过滤(支持逐个数据实时滤波)「建议收藏」

    K1键按,整块数据滤波测试。 K2键按,逐个数据滤波器测试。 使用AC6注意事项 特别注意附件章节C问题 上电后串口打印信息: 波特率 115200,数据位 8,奇偶校验位无,停止位 1。...F407自带16MHz,HSI时钟: - 调用函数HAL_InitTick,初始化滴答时钟中断1ms。...K1键按,整块数据滤波测试。 K2键按,逐个数据滤波器测试。 使用AC6注意事项 特别注意附件章节C问题 上电后串口打印信息: 波特率 115200,数据位 8,奇偶校验位无,停止位 1。...F407自带16MHz,HSI时钟: - 调用函数HAL_InitTick,初始化滴答时钟中断1ms。...发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    54220

    滴答清单待办状态同步更新Notion

    目前有些博主案例主要是以滴答清单国际版TickTick为例展示,今天我们就来讲解一,如何通过腾讯云HiFlow实现,滴答清单任务更新后反向同步Notion。...如果读过我们上一篇教程用户就记得,我们最后一步就是把自动生成滴答清单id反写回Notion,聪明用户肯定猜到了,我们通过这个滴答清单ID可以作为一个union id来把两边待办对应起来。...所以首先打开腾讯云HiFlow模版【滴答清单更新数据后同步更新Notion任务状态】:我们需要做第一步是,在【滴答清单】里把我们通过上个【Notion待办自动生成滴答清单todo】生成待办”碎碎念...第二步,我们需要查询Notion数据,我们选择我们需要查询对应Notion page比如这里我们需要我们之前写入待办滴答ID等于我们完成滴答ID值,通过这个值对比和映射,我们就可以准确找到...欢迎和我们分享投稿,会有机会获得限量腾讯周边公仔。

    1.3K40

    LARGE_INTEGER类型和LONGLONG类型以及QueryPerformanceFrequency函数

    一般用于处理超大数据。比如CPU里“性能计数器”之频率,经常在3亿次以上!就是1秒钟能跑3亿个“滴答”,这种情况,往往需要超大整数用来存储数据,此时就要用到LONGLONG。...;    };    LONGLONG QuadPart;   } LARGE_INTEGER; 在定时前应该先调用QueryPerformanceFrequency()函数获得机器内部计时器时钟频率...接着在需要严格计时事件发生前和发生之后分别调用QueryPerformanceCounter(),利用两次获得计数之差和时钟频率,就可以计算出事件经历精确时间。...(&litmp);//获得时钟频率   dff=(double)litmp.QuadPart;   QueryPerformanceCounter(&litmp);//获得初始值   qt1=litmp.QuadPart...);   dft=dfm/dff;//获得对应时间值 需要注意是DFT计算结果单位是秒。

    72730
    领券