gpt4 book ai didi

c - 我在 Windows 上用 C 语言做了高分辨率计时?谁能指导我在 2 毫秒内调用特定函数?

转载 作者:行者123 更新时间:2023-11-30 15:43:49 25 4
gpt4 key购买 nike

    hr_time.h:
----------
#include <windows.h>

typedef struct {
LARGE_INTEGER start;
LARGE_INTEGER stop;
} stopWatch;

void startTimer( stopWatch *timer);
void stopTimer( stopWatch *timer);
double LIToSecs( LARGE_INTEGER * L);
double getElapsedTime( stopWatch *timer);
------------------------------------------------------
hr_time.c:
------------
#include <windows.h>

#ifndef hr_timer
#include "hr_time.h"
#define hr_timer
#endif

void startTimer( stopWatch *timer) {
QueryPerformanceCounter(&timer->start);
}

void stopTimer( stopWatch *timer) {
QueryPerformanceCounter(&timer->stop);
}

double LIToSecs( LARGE_INTEGER * L) {
LARGE_INTEGER frequency;
QueryPerformanceFrequency( &frequency );
return ((double)L->QuadPart /(double)frequency.QuadPart);
}

double getElapsedTime( stopWatch *timer) {
LARGE_INTEGER time;
time.QuadPart = timer->stop.QuadPart - timer->start.QuadPart;
return LIToSecs( &time) ;
}
#include "TIMER1.h"
void main()
{
/**
* how to make This task is activated every 2ms ??
*/
TASK( Task2ms )
{

stopWatch s;
startTimer(&s);

if( XCPEVENT_DAQ_OVERLOAD & Xcp_DoDaqForEvent_2msRstr() )
{

}

if( XCPEVENT_MISSING_DTO & Xcp_DoStimForEvent_2msRstr() )
{

}


stopTimer(&s);
getElapsedTime(&s);

}
}

如果我们在 TimeStart 和 TimeEnd 处读取两个读数,则差异就是计数数量。将其除以计数器的频率(以每秒滴答数表示的值),结果就是定时代码执行所需的时间长度。

上面的代码工作正常,但需要一些建议才能在 2ms 或 10ms 调用该函数。有人可以帮我吗?

声明一个 stopWatch 类型的变量,例如 s。然后在您想要计时的代码之前插入一个 startTimer(&s) 函数调用,并在代码之后插入一个 stopTimer(&s) 调用。然后,您可以调用 getElapsedTime(&s) 以返回精确到微秒的时间(以秒为单位)。

我的问题:如何在 2ms 或 10ms 调用特定函数?上面的代码哪里修改?

我修改了代码并添加了主函数:是否可以每2ms调用该函数(例如:XCPEVENT_DAQ_OVERLOAD&Xcp_DoDaqForEvent_2msRstr()和XCPEVENT_MISSING_DTO&Xcp_DoStimForEvent_2msRstr())?

最佳答案

您问题中的代码摘录显示了如何测量高分辨率的耗时。它们没有展示如何安排定期执行。这需要一个计时器。

您无疑知道,标准 Win32 计时器是低分辨率计时器。您需要一个高分辨率计时器。最常用的例子是 multimedia timer 。最近,这些已被弃用,取而代之的是 timer queues .

关于c - 我在 Windows 上用 C 语言做了高分辨率计时?谁能指导我在 2 毫秒内调用特定函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19705467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com