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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? s3c2410xtimer.c

?? vxworks for S3c2410 bsp
?? C
字號:
/* s3c2410xTimer.c - Samsung S3C2410X timer library *//* Copyright 1984-2001 Wind River Systems, Inc. */#include "copyright_wrs.h"/* includes */#include "vxWorks.h"#include "config.h"#include "drv/timer/timerDev.h"#include "drv/timer/timestampDev.h"#include "s3c2410xTimer.h"#ifndef S3C2410X_TIMER_REG_READ#define S3C2410X_TIMER_REG_READ(reg, result) \    ((result) = *(volatile UINT32 *)(reg))#endif /*S3C2410X_TIMER_READ*/#ifndef S3C2410X_TIMER_REG_WRITE#define S3C2410X_TIMER_REG_WRITE(reg, data) \    (*((volatile UINT32 *)(reg)) = (data))#endif /*S3C2410X_TIMER_WRITE*/#ifndef S3C2410X_TIMER_INT_ENABLE#define S3C2410X_TIMER_INT_ENABLE(level) intEnable(level)#endif#ifndef S3C2410X_TIMER_INT_DISABLE#define S3C2410X_TIMER_INT_DISABLE(level) intDisable(level)#endif/* locals */LOCAL FUNCPTR sysClkRoutine    = NULL; LOCAL int sysClkArg            = (int)NULL; 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;         LOCAL FUNCPTR   sysTimestampRoutine     = NULL;         LOCAL int       sysTimestampArg         = 0;            void      sysTimestampInt (void);                  #endif  /* INCLUDE_TIMESTAMP *//********************************************************************************* sysClkInt - interrupt level processing for system clock*/void sysClkInt (void)    {    if (sysClkRoutine != NULL)        (* sysClkRoutine) (sysClkArg);    }/********************************************************************************* sysClkConnect - connect a routine 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,       int arg            )    {    if (sysClkConnected == FALSE)        {        S3C2410X_TIMER_REG_WRITE (S3C2410X_TCFG0, 0x00003f3f);         S3C2410X_TIMER_REG_WRITE (S3C2410X_TCFG1, 0x00000000);        S3C2410X_TIMER_REG_WRITE (S3C2410X_TCON, 0x00000000);                sysHwInit2 ();        sysClkConnected = TRUE;        }    sysClkRoutine   = NULL;    sysClkArg        = arg;#if ((CPU_FAMILY == ARM) && ARM_THUMB)    sysClkRoutine = (FUNCPTR)((UINT32)routine | 1);#else    sysClkRoutine = routine;#endif /* CPU_FAMILY == ARM */    return (OK);}/********************************************************************************* sysClkDisable - turn off system clock interrupts*** RETURNS: N/A** SEE ALSO: sysClkEnable()*/void sysClkDisable (void)    {        if (sysClkRunning)        {		S3C2410X_TIMER_REG_WRITE (S3C2410X_TCON, 0x00000000);		            S3C2410X_TIMER_INT_DISABLE (SYS_TIMER_INT_LVL);        sysClkRunning = FALSE;        }    }/********************************************************************************* sysClkEnable - turn on system clock interrupts*** RETURNS: N/A** SEE ALSO: sysClkConnect(), sysClkDisable(), sysClkRateSet()*/void sysClkEnable (void)    {    if (!sysClkRunning)        {		S3C2410X_TIMER_REG_WRITE (S3C2410X_TCNTB0, (375*(1000/sysClkTicksPerSecond)));        S3C2410X_TIMER_REG_WRITE (S3C2410X_TCON, 0x00000002);		S3C2410X_TIMER_REG_WRITE (S3C2410X_TCON, 0x00000009);                        S3C2410X_TIMER_INT_ENABLE (SYS_TIMER_INT_LVL);        sysClkRunning = TRUE;        }    }/********************************************************************************** SEE ALSO: sysClkEnable(), sysClkRateSet()*/int sysClkRateGet (void)    {    return (sysClkTicksPerSecond);    }/********************************************************************************** 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** RETURNS: N/A*/void sysAuxClkInt (void)    {    /* call auxiliary clock service routine */    if (sysAuxClkRoutine != NULL)        (*sysAuxClkRoutine) (sysAuxClkArg);    }/********************************************************************************* sysAuxClkConnect - connect a routine to the auxiliary clock 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)    sysAuxClkRoutine = (FUNCPTR)((UINT32)routine | 1);#else    sysAuxClkRoutine = routine;#endif /* CPU_FAMILY == ARM */    return (OK);    }/********************************************************************************* RETURNS: N/A** SEE ALSO: sysAuxClkEnable()*/void sysAuxClkDisable (void)    {        if (sysAuxClkRunning)        {        S3C2410X_TIMER_INT_DISABLE (AUX_TIMER_INT_LVL);        sysAuxClkRunning = FALSE;        }    }/********************************************************************************** RETURNS: N/A** SEE ALSO: sysAuxClkConnect(), sysAuxClkDisable(), sysAuxClkRateSet()*/void sysAuxClkEnable (void)    {    static BOOL connected = FALSE;    if (!connected)        {        intConnect (INUM_TO_IVEC (INT_LVL_TIMER1), sysAuxClkInt, 0);        connected = TRUE;        }    if (!sysAuxClkRunning)        {        sysAuxClkTicks = (AUX_TIMER_CLK / sysAuxClkTicksPerSecond);        S3C2410X_TIMER_INT_ENABLE (AUX_TIMER_INT_LVL);        sysAuxClkRunning = TRUE;        }    }/********************************************************************************* SEE ALSO: sysAuxClkEnable(), sysAuxClkRateSet()*/int sysAuxClkRateGet (void)    {    return (sysAuxClkTicksPerSecond);    }/********************************************************************************** SEE ALSO: sysAuxClkEnable(), sysAuxClkRateGet()*/STATUS sysAuxClkRateSet    (    int ticksPerSecond  /* number of clock interrupts per second */    )    {    if (ticksPerSecond < AUX_CLK_RATE_MIN || ticksPerSecond > AUX_CLK_RATE_MAX)        return (ERROR);    sysAuxClkTicksPerSecond = ticksPerSecond;    if (sysAuxClkRunning)        {        sysAuxClkDisable ();        sysAuxClkEnable ();        }    return (OK);    }#ifdef  INCLUDE_TIMESTAMP/********************************************************************************* RETURNS: N/A** SEE ALSO: sysTimestampConnect()*/void sysTimestampInt (void)    {    if (sysTimestampRunning && sysTimestampRoutine != NULL)        (*sysTimestampRoutine)(sysTimestampArg);    }/********************************************************************************* RETURNS: OK, or ERROR if sysTimestampInt() interrupt handler is not used.*/STATUS sysTimestampConnect    (    FUNCPTR routine,        int arg     /* argument with which to call routine */    )    {    return ERROR;    /* System clock tick specifies a rollover event */    }/********************************************************************************* sysTimestampEnable - initialize and enable the timestamp timer*** RETURNS: OK, or ERROR if hardware cannot be enabled.*/STATUS sysTimestampEnable (void)    {    if (!sysTimestampRunning)        {        sysTimestampRunning = TRUE;        }    sysClkEnable();    /* make sure that system clock is running */    return (OK);    }/********************************************************************************* sysTimestampDisable - disable the timestamp timer*** RETURNS: OK, or ERROR if timer cannot be disabled.*/STATUS sysTimestampDisable (void)    {    if (sysTimestampRunning)        sysTimestampRunning = FALSE;    return (OK);    }/********************************************************************************* sysTimestampPeriod - get the timestamp timer period** RETURNS: The period of the timestamp timer in counter ticks.*/UINT32 sysTimestampPeriod (void)    {    return (SYS_TIMER_CLK / sysClkTicksPerSecond);    }/********************************************************************************* sysTimestampFreq - get the timestamp timer clock frequency* RETURNS: The timestamp timer clock frequency, in ticks per second.*/UINT32 sysTimestampFreq (void)    {    return (SYS_TIMER_CLK);    }/********************************************************************************* sysTimestamp - get the timestamp timer tick count*** RETURNS: The current timestamp timer tick count.** SEE ALSO: sysTimestampLock()*/UINT32 sysTimestamp (void)    {    UINT32 count;	S3C2410X_TIMER_REG_READ (S3C2410X_TCNTO0, count);	    return (sysTimestampPeriod() - count);    }/********************************************************************************* sysTimestampLock - get the timestamp timer tick count** RETURNS: The current timestamp timer tick count.** SEE ALSO: sysTimestamp()*/UINT32 sysTimestampLock (void)    {    UINT32 result;    result = sysTimestamp ();    return (result);    }#endif  /* INCLUDE_TIMESTAMP */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本视频免费一区| 精品亚洲国内自在自线福利| 欧美日韩精品福利| 国产.欧美.日韩| 午夜久久久久久| 中文字幕一区二区5566日韩| 日韩午夜在线观看视频| 91亚洲精品久久久蜜桃网站| 另类专区欧美蜜桃臀第一页| 亚洲男人天堂av| 久久久午夜精品| 91精品视频网| 欧美日韩一区二区三区视频| 成人小视频免费在线观看| 日韩va欧美va亚洲va久久| 亚洲柠檬福利资源导航| 久久九九影视网| 欧美丰满少妇xxxbbb| 色综合中文字幕| 欧美一区二区视频观看视频 | 国产成人av电影| 久久不见久久见免费视频7 | 久88久久88久久久| 爽爽淫人综合网网站| 亚洲欧美视频在线观看| 欧美高清在线视频| 国产午夜精品一区二区三区视频| 欧美一区二区三区爱爱| 欧美日韩亚洲综合| 在线观看日韩国产| 91伊人久久大香线蕉| 99久久99久久精品国产片果冻| 国产精品亚洲综合一区在线观看| 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲高清免费观看| 亚洲在线一区二区三区| 亚洲美腿欧美偷拍| 亚洲色欲色欲www| 亚洲视频一区二区免费在线观看 | 久久人人超碰精品| 久久综合久色欧美综合狠狠| 日韩视频一区二区在线观看| 91精品国产一区二区三区香蕉| 678五月天丁香亚洲综合网| 欧美日韩在线免费视频| 精品视频一区二区不卡| 欧美精品123区| 欧美一区二区视频网站| 欧美成人性战久久| 久久综合狠狠综合| 中文一区在线播放| 亚洲乱码国产乱码精品精的特点 | 日韩精品一区二区三区在线| 日韩免费电影网站| 久久久精品免费网站| 国产精品视频免费看| 中文字幕日韩欧美一区二区三区| 综合久久国产九一剧情麻豆| 亚洲精品美腿丝袜| 日日夜夜精品视频免费| 激情小说欧美图片| 成人午夜电影网站| 一本大道综合伊人精品热热| 欧美日韩大陆一区二区| 日韩精品一区二区三区在线| 国产亚洲欧美激情| 亚洲精品免费视频| 老色鬼精品视频在线观看播放| 国产美女精品在线| 97se亚洲国产综合自在线观| 欧美午夜精品免费| 久久美女艺术照精彩视频福利播放| 国产精品久久久久天堂| 亚洲123区在线观看| 国精品**一区二区三区在线蜜桃| fc2成人免费人成在线观看播放| 在线观看国产日韩| 久久免费国产精品| 亚洲一区二区三区国产| 久久精品99国产精品日本| 波多野结衣中文字幕一区二区三区| 色偷偷88欧美精品久久久| 日韩午夜中文字幕| 亚洲欧美另类久久久精品2019| 青青草97国产精品免费观看 | 欧美最猛性xxxxx直播| 日韩欧美一区二区不卡| 最好看的中文字幕久久| 日韩国产欧美在线观看| 国产成人精品一区二区三区网站观看| 亚洲第一av色| 国产一区二区视频在线| 色系网站成人免费| 久久久久久97三级| 天天综合日日夜夜精品| www.色综合.com| 91麻豆精品国产自产在线| 成人欧美一区二区三区小说| 激情综合网最新| 在线免费观看不卡av| 国产肉丝袜一区二区| 午夜精品福利一区二区三区av| 高清在线不卡av| 日韩女同互慰一区二区| 亚洲无人区一区| www.综合网.com| 久久久久久久综合狠狠综合| 丝袜美腿高跟呻吟高潮一区| 一本到不卡精品视频在线观看| 久久午夜老司机| 日本aⅴ免费视频一区二区三区| 91日韩一区二区三区| 中文字幕第一区二区| 毛片av一区二区| 91免费看视频| www亚洲一区| 亚洲va欧美va人人爽午夜| 懂色av一区二区三区蜜臀| 欧美精品一二三四| 亚洲欧洲另类国产综合| 激情文学综合丁香| 日韩欧美国产综合一区 | 中文乱码免费一区二区| 免费日本视频一区| 日本高清无吗v一区| 国产调教视频一区| 蜜臀va亚洲va欧美va天堂| 欧美伦理视频网站| 亚洲男人的天堂一区二区| 国产精品99久久久久久久vr| 欧美一区二区三区视频免费播放| 亚洲另类色综合网站| 极品少妇xxxx精品少妇| 欧美精选午夜久久久乱码6080| 一色桃子久久精品亚洲| 国产一区二区三区久久久| 欧美一区二区在线免费观看| 国产精品免费视频观看| 91在线porny国产在线看| 国产日韩欧美在线一区| 久久国产精品一区二区| 91精品在线一区二区| 亚洲主播在线观看| 欧美日韩久久久一区| 亚洲一区二区三区视频在线播放 | 91视频.com| 一色桃子久久精品亚洲| 成人黄色小视频| 国产日产欧美一区二区视频| 成人妖精视频yjsp地址| 久久久国产精品麻豆 | 91蜜桃视频在线| 最新欧美精品一区二区三区| 91天堂素人约啪| 亚洲精品免费在线观看| 91成人国产精品| 亚洲一区二区在线观看视频| 色拍拍在线精品视频8848| 日韩精品成人一区二区在线| 5月丁香婷婷综合| 蜜臀av一区二区| 日韩免费视频一区二区| 久久精品国产在热久久| 国产无一区二区| 不卡视频在线观看| 一区二区三区日韩欧美精品| 欧美四级电影网| 久久www免费人成看片高清| 欧美一级生活片| 精品一区精品二区高清| 国产片一区二区| 欧美三日本三级三级在线播放| 午夜影院在线观看欧美| 欧美刺激午夜性久久久久久久| 国产乱人伦偷精品视频免下载| 在线成人av网站| 成人成人成人在线视频| 亚洲视频在线观看三级| 69堂亚洲精品首页| 国产在线观看免费一区| 亚洲综合在线视频| 欧美一级电影网站| 国产a级毛片一区| 亚洲一区视频在线观看视频| 亚洲精品在线免费播放| 99久久er热在这里只有精品15 | 91精品欧美久久久久久动漫 | 国产精品天天摸av网| 欧美在线啊v一区| 日日夜夜精品视频天天综合网| 久久综合九色综合欧美就去吻 | 国产精品另类一区| 欧美一区二区三区视频免费| 国产精品99久久久久久久vr| 亚洲欧美另类图片小说| 精品国产亚洲在线| 精品视频1区2区| 成人激情文学综合网| 天天影视色香欲综合网老头| 国产欧美日韩三级|