亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? sngks32ctimer.c

?? Vxworks下BSP源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* sngks32cTimer.c - Samsung KS32C timer library *//* Copyright 1984-2001 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01e,19apr02,m_h  sysAuxClkConnect for THUMB01d,27sep01,m_h  sysClkRateSet() doesn't change the clock rate01c,18jul01,m_h  Fix timestamp timer01b,26apr01,m_h  convert tabs to spaces for readability01a,12apr01,m_h  created from snds100 template.*//*DESCRIPTIONThis is a timer driver for Samsung's KS32C50100 microprocessor which isan ARM based processor with several integrated peripherals.It has an interrupt controller, two 32-bit timers, one Ethernet controller,two HDLC controllers, one IIC controller, general purpose I/O ports, and a 2-channel DMA controller.The 32-bit timers can be programmed in interval mode or toggle mode.  Ininterval mode, an output pulse is generated when the countdown value inthe count register reaches  zero.  This will generate a frequency of(SYSCLK/count).  On the other hand, in the toggle mode, the output togglesits state for each time the countdown value reaches zero.  In this case, theoutput frequency will be (SYSCLK/(2*count)).The Timer Data register is used to load the countdown value.  When the timeris enabled using the Timer Mode register, the Timer Count register is loadedwith the count in Timer Data register.  The count value is decremented for everyinternal clock edge.  Once the count becomes zero, an interrupt is generated(if enabled in the interrupt controller) and the Timer Count register isreloaded automatically.The internal timer registers are accessed in a straight-forward fashion.They are accessible as 32-bit integers from the internal system registeroffsets, as given in sngks32cTimer.h file.  The macros SNGKS32C_TIMER_REG_WRITEand SNGKS32C_TIMER_REG_READ does nothing but reading and writing 32-bitintegers from and to the given addresses.This driver provides 3 main functions, system clock support, auxiliaryclock support, and timestamp timer support.  If necessary, each functionmay be conditioned by a separate INCLUDE_ macro.  The timestamp functionis always conditional upon the INCLUDE_TIMESTAMP macro.The SNGKS32C ARM7 timer register definitions are given in sngks32cTimer.h file.The macros SYS_CLK_RATE_MIN, SYS_CLK_RATE_MAX, AUX_CLK_RATE_MIN, andAUX_CLK_RATE_MAX must be defined in sngks32carm7.h to provide parameter checking for the sys[Aux]ClkRateSet() routines.INCLUDES:sngks32cTimer.htimestampDev.hSEE ALSO:<Samsung KS32C50100 User's Manual>*//* includes */#include "vxWorks.h"#include "config.h"#include "drv/timer/timerDev.h"#include "drv/timer/timestampDev.h"#include "sngks32cTimer.h"void myDelay();/* defines *//* The default is to assume memory mapped I/O */#ifndef AT91C_ST_REG_READ#define AT91C_ST_REG_READ(reg, result) \    ((result) = *(volatile UINT32 *)(reg))#endif #ifndef AT91C_ST_REG_WRITE#define AT91C_ST_REG_WRITE(reg, data) \    (*((volatile UINT32 *)(reg)) = (data))#endif #ifndef AT91C_ST_INT_ENABLE#define AT91C_ST_INT_ENABLE(level) intEnable(level)#endif#ifndef AT91C_ST_INT_DISABLE#define AT91C_ST_INT_DISABLE(level) intDisable(level)#endif/* locals */LOCAL FUNCPTR sysClkRoutine    = NULL; /* routine to call on clock tick */LOCAL int sysClkArg            = (int)NULL; /* its argument */LOCAL int sysClkRunning        = FALSE;LOCAL int sysClkConnected      = FALSE;LOCAL int sysClkTicksPerSecond = 60;LOCAL FUNCPTR sysAuxClkRoutine    = NULL;LOCAL int sysAuxClkArg            = (int)NULL;LOCAL int sysAuxClkRunning        = FALSE;LOCAL int sysAuxClkTicksPerSecond = 100;LOCAL int sysAuxClkTicks;#ifdef INCLUDE_TIMESTAMPLOCAL BOOL      sysTimestampRunning     = FALSE;         /* running flag */LOCAL FUNCPTR   sysTimestampRoutine     = NULL;          /* routine to call on intr */LOCAL int       sysTimestampArg         = 0;             /* arg for routine */      void      sysTimestampInt (void);                  /* forward declaration */#endif  /* INCLUDE_TIMESTAMP *//********************************************************************************* sysClkInt - interrupt level processing for system clock** This routine handles a system clock interrupt.  It acknowledges the* interrupt and calls the routine installed by sysClkConnect().*/void sysClkInt (void)    {/*	int status,mask;*/    if (sysClkRoutine != NULL)        (* sysClkRoutine) (sysClkArg);    }/********************************************************************************* sysClkConnect - connect a routine to the system clock interrupt** This routine specifies the interrupt service routine to be called at each* clock interrupt.  Normally, it is called from usrRoot() in usrConfig.c to * connect usrClock() to the system clock interrupt.** RETURN: OK, or ERROR if the routine cannot be connected to the interrupt.** SEE ALSO: intConnect(), usrClock(), sysClkEnable()*/STATUS sysClkConnect    (    FUNCPTR routine,    /* routine to be called at each clock interrupt */    int arg        /* argument with which to call routine */    )    {        if (sysClkConnected == FALSE)        {        AT91C_ST_REG_WRITE (AT91C_ST_IDR, 1);/*disable the PIT  interrupt */	         sysHwInit2 ();        sysClkConnected = TRUE;        }    sysClkRoutine   = NULL;    sysClkArg        = arg;#if ((CPU_FAMILY == ARM) && ARM_THUMB)    /* set b0 so that sysClkConnect() can be used from shell */    sysClkRoutine = (FUNCPTR)((UINT32)routine | 1);#else    sysClkRoutine = routine;#endif /* CPU_FAMILY == ARM */    return (OK);    }/********************************************************************************* sysClkDisable - turn off system clock interrupts** This routine disables system clock interrupts.** RETURNS: N/A** SEE ALSO: sysClkEnable()*/void sysClkDisable (void)    {      if (sysClkRunning)        {                /* disable pit interrupt in the st controller */	        AT91C_ST_REG_WRITE (AT91C_ST_IDR , 1);        sysClkRunning = FALSE;        }    }/********************************************************************************* sysClkEnable - turn on system clock interrupts** This routine enables system clock interrupts.** RETURNS: N/A** SEE ALSO: sysClkConnect(), sysClkDisable(), sysClkRateSet()*/void sysClkEnable (void)    {    if (!sysClkRunning)        {        /*         * Load the match register with a new value calculated by         * adding the ticks per interrupt to the current value of the         * counter register.  Note that this may wraparound to a value         * less than the current counter value but thats OK.         */        AT91C_ST_REG_WRITE (AT91C_ST_PIMR, SYS_ST_CLK / sysClkTicksPerSecond);        /* enable pit  interrupt in st interrupt enable controller  sys interrupt in AIC */        AT91C_ST_REG_WRITE (AT91C_ST_IER, 1);	 AT91C_ST_REG_WRITE (AT91C_AIC_IECR,2);	                   sysClkRunning = TRUE;        }    }/********************************************************************************* sysClkRateGet - get the system clock rate** This routine returns the system clock rate.** RETURNS: The number of ticks per second of the system clock.** SEE ALSO: sysClkEnable(), sysClkRateSet()*/int sysClkRateGet (void)    {    return (sysClkTicksPerSecond);    }/********************************************************************************* sysClkRateSet - set the system clock rate** This routine sets the interrupt rate of the system clock.* It is called by usrRoot() in usrConfig.c.** RETURNS: OK, or ERROR if the tick rate is invalid or the timer cannot be set.** SEE ALSO: sysClkEnable(), sysClkRateGet()*/STATUS sysClkRateSet    (    int ticksPerSecond        /* number of clock interrupts per second */    )    {    if (ticksPerSecond < SYS_CLK_RATE_MIN || ticksPerSecond > SYS_CLK_RATE_MAX)        return (ERROR);    sysClkTicksPerSecond = ticksPerSecond;    if (sysClkRunning)        {        sysClkDisable ();        sysClkEnable ();        }    return (OK);    }/********************************************************************************* sysAuxClkInt - handle an auxiliary clock interrupt** This routine handles an auxiliary clock interrupt.  It acknowledges the* interrupt and calls the routine installed by sysAuxClkConnect().** RETURNS: N/A*/#if 0void sysAuxClkInt (void)    {    /* call auxiliary clock service routine */    if (sysAuxClkRoutine != NULL)        (*sysAuxClkRoutine) (sysAuxClkArg);    }/********************************************************************************* 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 */    )    {    sysAuxClkRoutine    = NULL;    sysAuxClkArg        = arg;#if ((CPU_FAMILY == ARM) && ARM_THUMB)    /* set b0 so that sysClkConnect() can be used from shell */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩色视频在线观看| 欧美精品一区二区在线观看| 久久99精品久久久久久久久久久久 | 亚洲国产成人私人影院tom| 欧美伊人精品成人久久综合97| 国产在线日韩欧美| 日韩精品国产精品| 亚洲精品成人在线| 中文在线资源观看网站视频免费不卡| 欧美日韩在线观看一区二区 | 天天免费综合色| 久久久国际精品| 3atv在线一区二区三区| 91久久国产综合久久| 成人免费毛片app| 国产一区二区三区精品视频| 日韩高清电影一区| 亚洲成在人线免费| 一区二区三区在线高清| 中文字幕一区三区| 欧美国产精品一区二区| 久久这里只有精品首页| 日韩视频一区二区三区在线播放| 91福利国产精品| 色狠狠综合天天综合综合| 99久久精品国产精品久久| 国产乱一区二区| 激情成人综合网| 激情成人午夜视频| 韩日av一区二区| 精品一区二区三区免费观看| 蜜桃传媒麻豆第一区在线观看| 日本最新不卡在线| 午夜精品久久久久久久久久久 | 精品一区二区三区在线播放视频| 日韩高清不卡一区二区三区| 亚洲电影一级片| 天天综合色天天综合| 午夜在线成人av| 三级精品在线观看| 日韩电影在线免费| 蜜桃视频第一区免费观看| 美女尤物国产一区| 国产美女在线观看一区| 国产成人免费9x9x人网站视频| 国产精品亚洲视频| www.av精品| 欧洲在线/亚洲| 欧美丰满一区二区免费视频| 欧美一区二区视频在线观看2022 | 久久99国产精品久久99| 国产在线不卡一卡二卡三卡四卡| 国产在线日韩欧美| 成人午夜激情片| 日本精品免费观看高清观看| 欧美日韩国产高清一区| 日韩欧美激情在线| 久久精品欧美日韩精品| 亚洲三级免费观看| 日韩中文欧美在线| 国内外成人在线| 99v久久综合狠狠综合久久| 色94色欧美sute亚洲线路二| 欧美精品丝袜中出| 久久综合色综合88| 国产精品乱码久久久久久| 亚洲美女免费在线| 美女免费视频一区二区| 成人综合在线观看| 欧美视频在线一区| 欧美v日韩v国产v| 亚洲手机成人高清视频| 午夜国产不卡在线观看视频| 国产一区二区免费视频| 色香色香欲天天天影视综合网| 欧美乱熟臀69xxxxxx| 久久综合九色综合97婷婷 | 最新国产精品久久精品| 午夜视频一区在线观看| 国产在线精品一区二区三区不卡 | 成人手机电影网| 欧美日韩亚洲综合一区二区三区| 日韩视频国产视频| 亚洲色欲色欲www| 精品中文字幕一区二区小辣椒| 成人性色生活片| 3d动漫精品啪啪1区2区免费| 国产精品国产三级国产aⅴ中文 | 中文字幕人成不卡一区| 无吗不卡中文字幕| 大美女一区二区三区| 欧美一区国产二区| 亚洲精品国产无天堂网2021| 国产麻豆午夜三级精品| 欧美日韩精品一区二区三区| 国产欧美日韩综合| 美国十次了思思久久精品导航| 91丨porny丨户外露出| 欧美变态凌虐bdsm| 亚洲大片在线观看| 99国产精品久久久| 国产午夜亚洲精品羞羞网站| 午夜激情一区二区| 色欧美片视频在线观看 | 国产日产欧产精品推荐色| 亚洲高清在线视频| 色综合久久中文字幕综合网| 精品久久五月天| 日本网站在线观看一区二区三区 | 久久99精品一区二区三区三区| 欧美优质美女网站| 国产精品不卡在线| 国产91精品久久久久久久网曝门| 欧美一区二区视频在线观看| 亚洲一区二区免费视频| 色婷婷精品大在线视频| 国产精品日韩成人| 国产高清不卡二三区| 精品国产成人在线影院| 免费观看久久久4p| 91精品国产色综合久久| 丝瓜av网站精品一区二区| 色av一区二区| 一区二区三区在线影院| 91免费小视频| 最新不卡av在线| 91麻豆福利精品推荐| 亚洲精品视频在线看| 99久久久国产精品| 日产精品久久久久久久性色| 日本精品一区二区三区高清| 亚洲免费色视频| 色婷婷综合久色| 亚洲精品成人天堂一二三| 日本久久一区二区| 亚洲成精国产精品女| 欧美色窝79yyyycom| 天天色综合天天| 91精品国产高清一区二区三区蜜臀| 亚洲一区二区三区四区五区黄| 色婷婷综合激情| 亚洲成人综合视频| 91精品国产一区二区三区蜜臀| 亚洲国产一区视频| 5858s免费视频成人| 奇米影视在线99精品| 精品国产电影一区二区| 国产电影一区二区三区| 国产精品国模大尺度视频| 色综合一区二区三区| 亚洲国产日韩a在线播放| 欧美丰满少妇xxxxx高潮对白| 七七婷婷婷婷精品国产| 26uuu色噜噜精品一区| 国产成都精品91一区二区三 | 精品综合免费视频观看| 久久这里都是精品| 99久久精品情趣| 午夜影院在线观看欧美| 精品久久久久香蕉网| 国产98色在线|日韩| 亚洲免费观看高清完整版在线| 欧美午夜一区二区三区| 免费看日韩a级影片| 日本一区二区在线不卡| 色www精品视频在线观看| 蜜桃一区二区三区在线| 国产欧美精品区一区二区三区| 在线精品国精品国产尤物884a| 免费不卡在线观看| 国产精品网曝门| 欧美日韩日日骚| 豆国产96在线|亚洲| 亚洲国产精品人人做人人爽| 欧美大白屁股肥臀xxxxxx| 成人aaaa免费全部观看| 亚洲一区二区欧美日韩| 亚洲精品一区二区三区福利| 99精品视频一区二区三区| 男男成人高潮片免费网站| 国产精品系列在线| 欧美日韩精品二区第二页| 国产成人鲁色资源国产91色综| 亚洲二区视频在线| 中文字幕av资源一区| 欧美日韩午夜在线| 国产成人午夜99999| 天堂精品中文字幕在线| 中文字幕av不卡| 日韩欧美色综合| 欧美特级限制片免费在线观看| 国产一区二区在线观看视频| 亚洲精品国产精华液| 国产视频一区二区在线观看| 欧美绝品在线观看成人午夜影视| 国产99久久久国产精品潘金网站| 日韩精品乱码免费| 一区二区三区在线观看视频| 中文字幕不卡在线| 欧美精品一区男女天堂|