#include "windows.h"
#include "stdio.h"
#include "rtapi.h"
//
// Local data.
//
LARGE_INTEGER Period; // Timer period
LARGE_INTEGER StartTime; // Start time of sampling run
ULONG TimerCounter = 0; // Counts entries to timer handler
//
//
VOID
main(int argc, char **argv)
{
LARGE_INTEGER x;
HANDLE hTimer;
//
// Set default timer period to 500 micro seconds
//
Period.QuadPart = 5000;
//
// Set to the next to highest real-time priority.
//
if (!RtSetThreadPriority( GetCurrentThread(), RT_PRIORITY_MAX-1))
printf("WARNING: Can't set to highest RTAPI priority.\n");
//
// Setup and start the periodic timer.
//
if (!(hTimer = RtCreateTimer(
NULL, // Security - NULL is none
0, // Stack size - 0 is use default
TimerHandler,// Timer handler
NULL, // NULL context (argument to handler)
RT_PRIORITY_MAX, // Priority
CLOCK_2))) // RTX HAL Timer
{
printf("ERROR: Could not create the RTAPI timer.\n");
RtExitProcess(2);
}
if (!RtSetTimerRelative( hTimer, &Period, &Period))
{
printf("ERROR: Could not set and start the RTAPI timer.\n");
ExitProcess(2);
}
//
// Wait for the sampling time.
//
Sleep(1000);
//
// Stop and delete the timer.
//
RtCancelTimer( hTimer, &x);
RtDeleteTimer( hTimer);
printf("Value of number of timers counter is %d\n",TimerCounter);
ExitProcess(0);
}
//
// timer handler function
//- increment the tick counter
//
int
RTFCNDCL
TimerHandler(
PVOID unused
)
{
 TimerCounter++;
return 0 ;
}