⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timerdemo.c

📁 Vxworks下的C例子程序
💻 C
字号:
/*--------------------------------------------------------------------------- [TITLE]      Demo [FILE] [VSN] [CREATED] [LASTCHNGD] [COPYRIGHT]  Copyright 2001 (C) CPS Europe B.V. [AUTHOR]     Michel Hendriks [PURPOSE] [NOTE] ---------------------------------------------------------------------------- [VERSION HISTORY] [DATE]    [WHO]  [COMMENT] ----------------------------------------------------------------------------*//* Include files ------------------------------------------------------------*/#include <vxWorks.h>        /* our OS */#include <taskLib.h>        /* task control */#include <signal.h>         /* signals */#include <stdio.h>          /* printf */#include <sysLib.h>         /* sysClkRateGet */#include <timers.h>         /* timers */#include <logLib.h>         /* logMsg */#include <wdLib.h>          /* watchdog routines *//* Constants ----------------------------------------------------------------*//* Type Definitions ---------------------------------------------------------*//* External data ------------------------------------------------------------*//* Public data --------------------------------------------------------------*//* Private vars -------------------------------------------------------------*/static BOOL wait;static WDOG_ID wdogId;/* Compile time checks ------------------------------------------------------*//* Prototyping for private routines -----------------------------------------*//* Implementation -----------------------------------------------------------*//*----------------------------------------------------------------------------- Description    : WatchDog ISR handler Parameters     : Globals Changed: Returns        :-----------------------------------------------------------------------------*/static void watchDogISR(void){    logMsg( "timedemo: WatchDogISR called\n", 1, 2, 3, 4, 5, 6 );}/*----------------------------------------------------------------------------- Description    : Signal handler for SIGALRM (Timer Handler) Parameters     : Globals Changed: Returns        :-----------------------------------------------------------------------------*/static void timerHandler    (    timer_t timerid,      /* expired timer ID */    int arg               /* user argument    */    ){    logMsg( "timedemo: Timer 0x%x expired (arg = 0x%x)\n", (int)timerid, arg, 3, 4, 5, 6 );    wait = FALSE;}/*----------------------------------------------------------------------------- Description    : Main entry for this demo Parameters     : Globals Changed: Returns        : OK-----------------------------------------------------------------------------*/STATUS timedemo( void ){    timer_t             timerId ;               /* id for the posix timer */    struct itimerspec   timeToSet ;             /* time to be set */    STATUS              retval = OK;    wait = TRUE;    /*     * Start POSIX timer demo    */    /* Set the time to the desired value */    timeToSet.it_value.tv_sec     = 5 ;         /* initial (one shot) value */    timeToSet.it_value.tv_nsec    = 0 ;    timeToSet.it_interval.tv_sec  = 0 ;         /* reload (repetitive) value */    timeToSet.it_interval.tv_nsec = 0 ;    if( timer_create( CLOCK_REALTIME, NULL, &timerId )  == ERROR )    {        perror( "timedemo: Error in creating the timer\n" );        retval = ERROR;    }    if( timer_connect( timerId, &timerHandler, 2)  == ERROR )    {        perror( "timedemo: Error in connecting the timer\n" );        retval = ERROR;    }    else if( timer_settime( timerId, CLOCK_REALTIME, &timeToSet, NULL )  == ERROR )    {        perror( "timedemo: Error in setting the timer\n" );        retval = ERROR;    }    else    {        if ( taskDelay(sysClkRateGet() * 20) == ERROR )        {            perror( "timedemo: taskDelay expired early\n" );            retval = ERROR;        }        {            struct timespec time_delay;            struct timespec time_remaining;            time_delay.tv_sec = 2;            time_delay.tv_nsec = 500000000L;            if ( nanosleep( &time_delay, &time_remaining ) == ERROR )            {                perror( "timedemo: nanosleep expired early\n" );                retval = ERROR;            }            else            {                logMsg( "timedemo: nanosleep expired normally\n", 1, 2, 3, 4, 5, 6 );            }        }/*        while ( wait )        {        }*/    }    /* Cleanup */    if (timer_delete (timerId) == ERROR)    {        perror( "timedemo: Error in deleting the timer\n" );        retval = ERROR;    }    /*     * Start watchdog timer demo    */    wdogId = wdCreate();    if ( wdogId == NULL )    {        perror( "timedemo: couldn't create watchdog\n" );        retval = ERROR;    }    else if ( wdStart( wdogId, sysClkRateGet() * 5, (FUNCPTR)watchDogISR, 0 ) == ERROR )    {        perror( "timedemo: couldn't start watchdog\n" );        retval = ERROR;    }    else    {        if ( taskDelay(sysClkRateGet() * 20) == ERROR )        {            perror( "timedemo: taskDelay expired early\n" );            retval = ERROR;        }    }    /* Cleanup */    if ( wdDelete( wdogId ) == ERROR )    {        perror( "timedemo: couldn't delete watchdog\n" );        retval = ERROR;    }    return( retval );}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -