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

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

?? timer.c

?? 三星2440 cpu WINCE 5.00板級支持包
?? C
字號:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
//------------------------------------------------------------------------------
//
//  Module: timer.c           
//
//  Interface to OAL timer services.
//
#include <windows.h>
#include <nkintr.h>
#include <ceddk.h>
#include <oal.h>
#include <s3c2440x.h>

//------------------------------------------------------------------------------
// Local Variables 

static S3C2440X_PWM_REG *g_pPWMRegs = NULL;
 

//------------------------------------------------------------------------------
//
//  Function: OALTimerInit
//
//  This function is typically called from the OEMInit to initialize
//  Windows CE system timer. The tickMSec parameter determine timer
//  period in milliseconds. On most platform timer period will be
//  1 ms, but it can be usefull to use higher value for some
//  specific (low-power) devices.
//
//  Implementation for s3c2440x is using timer 4 as system timer.
//
BOOL OALTimerInit(
    UINT32 msecPerSysTick, UINT32 countsPerMSec, UINT32 countsMargin
) {
    BOOL rc = FALSE;
    UINT32 countsPerSysTick;
    UINT32 sysIntr, irq;
    UINT32 tcon;

    OALMSG(OAL_TIMER&&OAL_FUNC, (
        L"+OALTimerInit( %d, %d, %d )\r\n", 
        msecPerSysTick, countsPerMSec, countsMargin
    ));

    // Validate Input parameters
    countsPerSysTick = countsPerMSec * msecPerSysTick;
    if (
        msecPerSysTick < 1 || msecPerSysTick > 1000 ||
        countsPerSysTick < 1 || countsPerSysTick > 65535
    ) {
        OALMSG(OAL_ERROR, (
            L"ERROR: OALTimerInit: System tick period out of range..."
        ));
        goto cleanUp;
    }

    // Initialize timer state global variable    
    g_oalTimer.msecPerSysTick = msecPerSysTick;
    g_oalTimer.countsPerMSec = countsPerMSec;
    g_oalTimer.countsMargin = countsMargin;
    g_oalTimer.countsPerSysTick = countsPerSysTick;
    g_oalTimer.curCounts = 0;
    g_oalTimer.maxPeriodMSec = 0xFFFF/g_oalTimer.countsPerMSec;

    // Set kernel exported globals to initial values
    idleconv = countsPerMSec;
    curridlehigh = 0;
    curridlehigh = 0;

    // Initialize high resolution timer function pointers
    pQueryPerformanceFrequency = OALTimerQueryPerformanceFrequency;
    pQueryPerformanceCounter = OALTimerQueryPerformanceCounter;

    // Create SYSINTR for timer
    irq = IRQ_TIMER4;
    sysIntr = OALIntrRequestSysIntr(1, &irq, OAL_INTR_FORCE_STATIC);

    // Hardware Setup
    g_pPWMRegs = (S3C2440X_PWM_REG*)OALPAtoUA(S3C2440X_BASE_REG_PA_PWM);

    // Set prescaler 1 to 1 
    OUTREG32(&g_pPWMRegs->TCFG0, INREG32(&g_pPWMRegs->TCFG0) & ~0x0000FF00);

    // Select MUX input 1/2
    OUTREG32(&g_pPWMRegs->TCFG1, INREG32(&g_pPWMRegs->TCFG1) & ~(0xF << 16));

    // Set timer register
    OUTREG32(&g_pPWMRegs->TCNTB4, g_oalTimer.countsPerSysTick);

    // Start timer in auto reload mode
    tcon = INREG32(&g_pPWMRegs->TCON) & ~(0x0F << 20);
    OUTREG32(&g_pPWMRegs->TCON, tcon | (0x2 << 20) );
    OUTREG32(&g_pPWMRegs->TCON, tcon | (0x5 << 20) );

    // Enable System Tick interrupt
    if (!OEMInterruptEnable(sysIntr, NULL, 0)) {
        OALMSG(OAL_ERROR, (
            L"ERROR: OALTimerInit: Interrupt enable for system timer failed"
        ));
        goto cleanUp;

    }

//    
// Define ENABLE_WATCH_DOG to enable watchdog timer support.
// NOTE: When watchdog is enabled, the device will reset itself if watchdog timer is not refreshed within ~4.5 second.
//       Therefore it should not be enabled when kernel debugger is connected, as the watchdog timer will not be refreshed.
//
#ifdef ENABLE_WATCH_DOG
    {
        extern void SMDKInitWatchDogTimer (void);
        SMDKInitWatchDogTimer ();
    }
#endif

    // Done        
    rc = TRUE;
    
cleanUp:
    OALMSG(OAL_TIMER && OAL_FUNC, (L"-OALTimerInit(rc = %d)\r\n", rc));
    return rc;
}


//------------------------------------------------------------------------------
//
//  Function: OALTimerIntrHandler
//
//  This function implement timer interrupt handler. It is called from common
//  ARM interrupt handler.
//
UINT32 OALTimerIntrHandler()
{
    UINT32 sysIntr = SYSINTR_NOP;

    // Update high resolution counter
    g_oalTimer.curCounts += g_oalTimer.countsPerSysTick;
                             
    // Update the millisecond counter
    CurMSec += g_oalTimer.msecPerSysTick;

    // Reschedule?
    if ((int)(CurMSec - dwReschedTime) >= 0) sysIntr = SYSINTR_RESCHED;

#ifdef OAL_ILTIMING
    if (g_oalILT.active) {
        if (--g_oalILT.counter == 0) {
            sysIntr = SYSINTR_TIMING;
            g_oalILT.counter = g_oalILT.counterSet;
            g_oalILT.isrTime2 = OALTimerCountsSinceSysTick();
        }
    }        
#endif

    return sysIntr;
}


//------------------------------------------------------------------------------
//
//  Function: OALTimerCountsSinceSysTick
//
//  This function return count of hi res ticks since system tick.
//
//  Timer 4 counts down, so we should substract actual value from 
//  system tick period.
//

INT32 OALTimerCountsSinceSysTick()
{
    return (g_oalTimer.countsPerSysTick - INREG32(&g_pPWMRegs->TCNTB4));
}

//------------------------------------------------------------------------------

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色av成人天堂桃色av| 全部av―极品视觉盛宴亚洲| 精品剧情v国产在线观看在线| 国产成人精品亚洲777人妖 | 欧美日韩一区精品| 国产69精品久久久久777| 亚洲免费成人av| 国产色一区二区| 日韩一区二区三区精品视频| 色综合天天综合色综合av| 精品亚洲欧美一区| 亚洲3atv精品一区二区三区| 国产精品毛片高清在线完整版| 欧美狂野另类xxxxoooo| 欧美日韩亚洲高清一区二区| 成人av电影免费在线播放| 狠狠色丁香久久婷婷综| 亚洲成人综合视频| 性久久久久久久久| 一区二区成人在线| 国产精品久久久久久福利一牛影视 | 一区二区免费在线播放| 中文字幕一区二区三区在线播放 | 亚洲成av人片一区二区梦乃| 亚洲欧美色综合| 一区在线观看免费| 一区精品在线播放| 亚洲资源中文字幕| 亚洲一区二区三区中文字幕| 亚洲欧美经典视频| 亚洲精品第1页| 亚洲bt欧美bt精品777| 日本女人一区二区三区| 久久aⅴ国产欧美74aaa| 韩国av一区二区三区在线观看| 蜜桃精品视频在线观看| 国产露脸91国语对白| 色综合天天综合狠狠| 在线亚洲一区观看| 欧美伦理电影网| 亚洲18女电影在线观看| 国产一区二区h| 国产精品一区专区| 99re热这里只有精品免费视频| 在线观看亚洲a| 91精品国产色综合久久不卡蜜臀| 精品国产乱码久久久久久蜜臀 | 国产一区二区三区精品视频 | 国产久卡久卡久卡久卡视频精品| 91视频免费观看| 日韩三级伦理片妻子的秘密按摩| 国产农村妇女精品| 亚洲综合一区二区三区| 成人小视频免费在线观看| 欧美日韩国产一级片| 国产精品初高中害羞小美女文| 蜜臀av国产精品久久久久| 91小视频免费观看| 久久色视频免费观看| 日精品一区二区| 97精品电影院| 国产日产欧美精品一区二区三区| 亚洲天堂福利av| 成人免费电影视频| 久久久久国色av免费看影院| 亚洲一区二区偷拍精品| av一本久道久久综合久久鬼色| 欧美一激情一区二区三区| 婷婷国产v国产偷v亚洲高清| 中日韩免费视频中文字幕| 久久国产精品色| 精品国产一区二区在线观看| 蜜桃av一区二区| 日韩午夜中文字幕| 国产一区激情在线| 欧美国产精品中文字幕| 日韩欧美国产综合在线一区二区三区| 国产福利一区在线观看| 欧美精品一区二区久久婷婷| 蜜桃视频一区二区三区| 精品国产乱码久久久久久浪潮 | 日韩精品中文字幕在线一区| 老司机精品视频导航| 国内成人免费视频| 在线观看亚洲a| 日韩欧美成人一区二区| 久久精品水蜜桃av综合天堂| 人人超碰91尤物精品国产| 99久久精品情趣| 精品国产91乱码一区二区三区 | 精品国精品国产| 亚洲一区中文日韩| 成人av资源网站| 2020国产精品久久精品美国| 天天综合网 天天综合色| www.欧美亚洲| 亚洲国产精品成人综合色在线婷婷 | 久久久另类综合| 午夜久久久久久久久久一区二区| 波多野洁衣一区| 国产亚洲一区二区三区四区| 日本亚洲视频在线| 欧美日韩一本到| 亚洲欧美日韩国产一区二区三区| 国产精品99久久不卡二区| 欧美一级片在线观看| 亚洲久草在线视频| 色哟哟精品一区| 中文字幕一区日韩精品欧美| 国产乱人伦偷精品视频不卡| 精品国产乱码久久久久久老虎| 日韩精品一二区| 欧美日韩国产小视频在线观看| 一区二区三区精品在线观看| 国产精品羞羞答答xxdd| 日韩欧美中文一区| 麻豆传媒一区二区三区| 欧美一区二区视频在线观看2020| 亚洲高清在线精品| 欧美日韩国产经典色站一区二区三区 | 日韩一区二区麻豆国产| 亚洲成av人片在线| 欧美日韩的一区二区| 丝袜美腿亚洲综合| 日韩一区二区在线看| 蜜桃视频在线观看一区二区| 日韩欧美不卡在线观看视频| 一区二区欧美国产| 日韩一区二区三区精品视频| 精品亚洲免费视频| 久久精品视频免费| 成人国产精品视频| 亚洲视频在线一区| 丁香桃色午夜亚洲一区二区三区| 中文字幕中文字幕在线一区 | 国产欧美精品一区二区三区四区| 国产成人综合亚洲91猫咪| 中文字幕 久热精品 视频在线| 成人三级在线视频| 一区二区欧美在线观看| 欧美性视频一区二区三区| 视频一区中文字幕| 精品欧美乱码久久久久久1区2区 | 在线观看成人小视频| 午夜精品久久久久| 精品少妇一区二区三区免费观看 | 精品欧美乱码久久久久久1区2区| 精品一区二区三区免费毛片爱| 国产欧美一区二区精品性| 91视频国产资源| 亚洲在线视频网站| 国产日产亚洲精品系列| 91麻豆精品秘密| 青青草原综合久久大伊人精品优势| 欧美精品一区二区三区视频| 日韩欧美在线影院| 成人免费视频免费观看| 亚洲午夜三级在线| 26uuuu精品一区二区| 99久久国产综合色|国产精品| 亚洲va国产va欧美va观看| 久久婷婷国产综合精品青草| 99久久精品一区二区| 日本亚洲电影天堂| 国产女人aaa级久久久级 | 成人综合日日夜夜| 一区二区在线看| 日韩欧美黄色影院| 高清免费成人av| 另类小说视频一区二区| 国产精品成人一区二区艾草| 在线电影一区二区三区| 风流少妇一区二区| 视频一区视频二区中文字幕| 国产精品欧美一级免费| 欧美探花视频资源| 不卡的看片网站| 久久99精品久久久久久国产越南| 17c精品麻豆一区二区免费| 欧美二区在线观看| 成人福利在线看| 日韩福利视频导航| 国产精品女同互慰在线看| 日韩精品中文字幕一区二区三区| 91女人视频在线观看| 国产一区二区三区不卡在线观看| 亚洲一区二区三区美女| 国产精品免费av| 精品日韩欧美一区二区| 欧美精品欧美精品系列| 不卡的av电影在线观看| 老汉av免费一区二区三区| 日韩av网站在线观看| 亚洲综合成人在线| 国产精品久久看| 2017欧美狠狠色| 日韩一区二区在线看片| 91啪亚洲精品| 理论片日本一区| 日韩精品一级二级|