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

📄 sonictimer.c

📁 IXP425的BSP代码
💻 C
字号:
/* sonicTimer.c - National Semiconductor DP83932BVF (SONIC) timer library *//* Copyright 1997 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01b,29Apr97,sal  Change INCLUDE_SN to INCLUDE_NETWORK01a,03mar97,kkk  created.*//*DESCRIPTIONThis library provides auxiliary clock timer routines, which are based on the the SONIC ethernet driver. Thus, the auxiliary clock is enabled only if the SONIC ethernet driver is enabled.The macros AUX_CLK_RATE_MIN and AUX_CLK_RATE_MAX must be defined to provide parameter checking for the sysAuxClkRateSet() routines.SEE ALSO:.pG "Configuration"*//* extern declarations */#ifdef INCLUDE_NETWORK			/* enable aux. clock only if SONIC */IMPORT void     snClkDisable();		/* is enabled 			   */IMPORT void     snClkEnable();#endif /* INCLUDE_NETWORK *//* Locals */LOCAL int   sysAuxClkTicksPerSecond = 100;      /* default aux timer rate     */LOCAL int   sysAuxClkArg            = NULL;     /* aux clock int routine arg  */LOCAL BOOL  sysAuxClkConnected      = FALSE;    /* sys aux clock connect flag */LOCAL BOOL  sysAuxClkRunning        = FALSE;    /* sys aux clock enabled flag */LOCAL FUNCPTR   sysAuxClkRoutine    = NULL;     /* aux clock interpt routine  *//********************************************************************************* sysAuxClkInt - interrupt level processing for auxiliary clock** This routine handles the auxiliary clock interrupt.  It is attached to the* clock interrupt vector by the routine sysAuxClkConnect().* The appropriate routine is called and the interrupt is acknowleged.** RETURNS: N/A.*/LOCAL void sysAuxClkInt (void)    {    if (sysAuxClkRoutine != NULL)        (*sysAuxClkRoutine) (sysAuxClkArg);     /* call system clock routine */    }/********************************************************************************* sysAuxClkConnect - connect a routine to the auxiliary clock interrupt** This routine specifies the interrupt service routine to be called at each* auxiliary clock interrupt.  It does not enable auxiliary clock* interrupts.** RETURNS: OK, or ERROR if the routine cannot be connected to the interrupt.** SEE ALSO: intConnect(), sysAuxClkEnable()*/STATUS sysAuxClkConnect    (    FUNCPTR routine,    /* routine called at each aux clock interrupt    */    int arg             /* argument to auxiliary clock interrupt routine */    )    {    if (!sysAuxClkConnected)        {        sysAuxClkConnected = TRUE;        }    sysAuxClkRoutine = routine;    sysAuxClkArg = arg;    return (OK);    }/********************************************************************************* sysAuxClkDisable - turn off auxiliary clock interrupts** This routine disables auxiliary clock interrupts.** RETURNS: N/A** SEE ALSO: sysAuxClkEnable()*/void sysAuxClkDisable (void)    {#ifdef  INCLUDE_NETWORK    /* disable clock in the SONIC */    snClkDisable (0);    sysAuxClkRunning = FALSE;#endif  /* INCLUDE_NETWORK */    }/********************************************************************************* sysAuxClkEnable - turn on auxiliary clock interrupts** This routine enables auxiliary clock interrupts.** RETURNS: N/A** SEE ALSO: sysAuxClkConnect(), sysAuxClkDisable(), sysAuxClkRateSet()*/void sysAuxClkEnable (void)    {#ifdef  INCLUDE_NETWORK    /* enable clock in the SONIC */    snClkEnable (0, sysAuxClkTicksPerSecond, sysAuxClkInt);    sysAuxClkRunning = TRUE;#endif  /* INCLUDE_NETWORK */    }/********************************************************************************* sysAuxClkRateGet - get the auxiliary clock rate** This routine returns the interrupt rate of the auxiliary clock.** RETURNS: The number of ticks per second of the auxiliary clock.** SEE ALSO: sysAuxClkEnable(), sysAuxClkRateSet()*/int sysAuxClkRateGet (void)    {    return (sysAuxClkTicksPerSecond);    }/********************************************************************************* sysAuxClkRateSet - set the auxiliary clock rate** This routine sets the interrupt rate of the auxiliary clock.* It does not enable auxiliary clock interrupts.** RETURNS: OK, or ERROR if the tick rate is invalid or the timer cannot be set.** SEE ALSO: sysAuxClkEnable(), sysAuxClkRateGet()*/STATUS sysAuxClkRateSet    (    int ticksPerSecond     /* number of clock interrupts per second */    )    {#ifdef  INCLUDE_NETWORK    if (ticksPerSecond < AUX_CLK_RATE_MIN || ticksPerSecond > AUX_CLK_RATE_MAX)        {        return (ERROR);        }    sysAuxClkTicksPerSecond = ticksPerSecond;    if (sysAuxClkRunning)        {        sysAuxClkDisable ();        sysAuxClkEnable ();        }    return (OK);#else    return (ERROR);#endif  /* INCLUDE_NETWORK */    }

⌨️ 快捷键说明

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