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

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

?? timer.c

?? windows ce 50 drive program
?? C
?? 第 1 頁 / 共 2 頁
字號:
OEMSetAlarmTime(LPSYSTEMTIME lpst) 
{
	volatile INTreg *s2440INT = (INTreg *)INT_BASE;		// for alarm 030818
	volatile RTCreg *s2440RTC = (RTCreg *)RTC_BASE;

	RETAILMSG(1,(TEXT("OEMSetAlarmTime: Year: %u, Month: %u, Day: %u, Hour: %u, Minute: %u, second: %u rcnr=%Xh\n"), 
		lpst->wYear, lpst->wMonth,lpst->wDay, lpst->wHour, lpst->wMinute,lpst->wSecond,s2440RTC->rRTCCON));

	if ( !lpst ||			// for alarm 030818
		(lpst->wSecond > 59)   ||  // 0 - 59
		(lpst->wMinute > 59)   ||  // 0 - 59
		(lpst->wHour > 23)     ||  // 0 - 23
		(lpst->wDayOfWeek > 6) ||  // 0 - 6, Sun:0, Mon:1, ...
		(lpst->wDay > 31)      ||  // 0 - 31
		(lpst->wMonth > 12)    ||  // 1 - 12, Jan:1, Feb:2, ...
		(lpst->wMonth == 0)    ||
		(lpst->wYear < 2000)   ||  // We have a 100 year calander (2 BDC digits) with 
		(lpst->wYear > 2099)       // a leap year generator hard-wired to year 2000.
	)
	return FALSE;    

	s2440RTC->rRTCCON = (1 << 0);					/* RTC Control Enable 			*/
    
	s2440RTC->rALMSEC  = (unsigned char)TO_BCD(lpst->wSecond );
	s2440RTC->rALMMIN  = (unsigned char)TO_BCD(lpst->wMinute );
	s2440RTC->rALMHOUR = (unsigned char)TO_BCD(lpst->wHour   );

	s2440RTC->rALMDAY  = (unsigned char)TO_BCD(lpst->wDay    );
	s2440RTC->rALMMON  = (unsigned char)TO_BCD(lpst->wMonth  );
	s2440RTC->rALMYEAR = (unsigned char)TO_BCD((lpst->wYear % 100));

	s2440RTC->rRTCALM = 0x7f;	// for alarm 030818

	s2440RTC->rRTCCON = (0 << 0);					/* RTC Control Disable			*/

	// for alarm 030818
	s2440INT->rSRCPND  =  BIT_RTC;     /* RTC Alarm Interrupt Clear */
	s2440INT->rINTPND  =  BIT_RTC;
	s2440INT->rINTMSK &= ~BIT_RTC;     /* RTC Alarm Enable    */
 
	return TRUE;
}

//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
DWORD
PerfCountFreq()
{
    return (OEMClockFreq);
}



//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
DWORD
PerfCountSinceTick()
{
    volatile PWMreg *s2440PWM;
    DWORD dwCount;

    s2440PWM = (PWMreg *)PWM_BASE;

    dwCount= ((DWORD)s2440PWM->rTCNTO4);
    
    // Note: if dwCount is negative, the counter went past the match point.  The math
	// still works since it accounts for the dwReschedIncr time plus the time past
	// the match.
    return dwCurReschedIncr - dwCount;
}


//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void
CPUSetSysTimerCount(
    DWORD dwCountdownMSec
    )
{
	DWORD dwMatch, ttmp;
	volatile PWMreg *s2440PWM;

    s2440PWM = (PWMreg *)PWM_BASE;
	
    dwCurReschedIncr = dwCountdownMSec * OEMCount1ms;
    dwMatch = dwCurReschedIncr;

	s2440PWM->rTCNTB4 = dwMatch;

	ttmp = s2440PWM->rTCON & (~(0xf << 20));

	s2440PWM->rTCON = ttmp | (2 << 20);		/* update TCVNTB4, stop					*/
	s2440PWM->rTCON = ttmp | (1 << 20);		/* one-shot mode,  start				*/
}


//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
BOOL
CPUClearSysTimerIRQ(
    void
    )
{
	volatile INTreg *s2440INT; 
	BOOL fPending;
	DWORD intstatus;
	    
	s2440INT = (INTreg *)INT_BASE;
		
	intstatus = s2440INT->rSRCPND;

	if ((intstatus & (BIT_TIMER4)) != 0) {
		s2440INT->rSRCPND = BIT_TIMER4;        
		s2440INT->rINTPND = BIT_TIMER4;
		fPending = TRUE;
	} else {
		fPending = FALSE;
	}
	
    return fPending;	
}


//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
DWORD
CPUGetSysTimerCountElapsed(
    DWORD dwTimerCountdownMSec,
    volatile DWORD *pCurMSec,
    DWORD *pPartialCurMSec,
    volatile ULARGE_INTEGER *pCurTicks
    )
{
    volatile PWMreg *s2440PWM;
	DWORD dwTick, dwCount;

    s2440PWM = (PWMreg *)PWM_BASE;
    dwTick = dwTimerCountdownMSec * OEMCount1ms;

    // If timer IRQ pending, a full resched period elapsed
    if (CPUClearSysTimerIRQ( )) {
        *pCurMSec += dwTimerCountdownMSec;
        pCurTicks->QuadPart += dwTick;
        return dwTimerCountdownMSec;
    }

    // No timer IRQ pending, calculate how much time has elapsed
	dwCount= ((DWORD)s2440PWM->rTCNTO4);	
	
    if (dwCount > dwTick) {
        // This is an error case.  Recover gracefully.
        dwCount = dwTick;
    } else {
        dwCount = dwTick - dwCount;
    }

    pCurTicks->QuadPart += dwCount;

    dwCount += *pPartialCurMSec;
    *pPartialCurMSec = dwCount % OEMCount1ms;
    *pCurMSec += (dwCount /= OEMCount1ms);

    return dwCount;
}

//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
extern void CPUEnterIdleMode(void);

extern void OEMWriteDebugLED(WORD wIndex, DWORD dwPattern);

void
CPUEnterIdle()
{
	static volatile CLKPWRreg * s2440CLKPW = (CLKPWRreg *)CLKPWR_BASE;
	static volatile IOPreg    * s2440IOP   = (IOPreg    *)IOP_BASE;
	
	fInterruptFlag = FALSE;
	INTERRUPTS_ON();

	s2440IOP->rGPFDAT &= ~(1 << 5);
	s2440CLKPW->rCLKCON |=  (1 << 2);		/* Enter IDLE Mode                              */
	while (!fInterruptFlag) {}					/* Wait until S3C2440X enters IDLE mode         */
	s2440CLKPW->rCLKCON &= ~(1 << 2);		/* turn-off IDLE bit.                           */
											/* Any interrupt will wake up from IDLE mode    */
	s2440IOP->rGPFDAT |= (1 << 5);
}


// Maximum idle is fixed a 1 ms because the PIT has to count down to 0 before reloading
// the new countdown value.
#define IDLE_MAX_MS  100
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
DWORD
CPUGetSysTimerCountMax(
    DWORD dwIdleMSecRequested
    )
{
    if (dwIdleMSecRequested > IDLE_MAX_MS) {
        return IDLE_MAX_MS;
    }
    return dwIdleMSecRequested;
}

void EnterSlowMode()
{
	static volatile CLKPWRreg * s2440CLKPW  = (CLKPWRreg *)CLKPWR_BASE;
	static volatile IOPreg    * s2440IOP    = (IOPreg    *)IOP_BASE;
	static volatile MEMreg	  * s2440MemReg = (MEMreg      *)MEMCTRL_BASE;

	//RETAILMSG(1,(TEXT("EnterSlowMode \r\n")));
	fSlowInterruptFlag = TRUE;
	s2440IOP->rGPFDAT &= ~(1 << 7);

	//FCLK=FIN/1, SLOW mode, MPLL=off, UPLL=off
	s2440CLKPW->rCLKSLOW |= (1<<4)|(1<<5)|(1<<7);
	saveREFRESH = s2440MemReg->rREFRESH;
	s2440MemReg->rREFRESH=(1<<23)|(unsigned int)(2048+1-12*15.6);
	//Trp=2clk, Trc=4clk
}

void ExitSlowMode()
{
	static volatile CLKPWRreg * s2440CLKPW  = (CLKPWRreg *)CLKPWR_BASE;
	static volatile IOPreg    * s2440IOP    = (IOPreg    *)IOP_BASE;
	static volatile MEMreg	  * s2440MemReg = (MEMreg      *)MEMCTRL_BASE;
//	int i;

	//RETAILMSG(1,(TEXT("ExitSlowMode \r\n")));
	fSlowInterruptFlag = FALSE;

	s2440CLKPW->rCLKSLOW = 0|(1<<4)|(0<<5);// PLL on, MPLL=on
	//for ( i = 0; i < 2048; i++); //S/W MPLL lock-time
	s2440CLKPW->rCLKSLOW = 0|(0<<4)|(0<<5);// NORMAL mode, PLL=on, MPLL=on
	s2440MemReg->rREFRESH = saveREFRESH;

	s2440IOP->rGPFDAT |= (1 << 7);
}


void SetSysTimerInterval(DWORD dwTicks)
{
    volatile PWMreg *s2440PWM = (PWMreg *)PWM_BASE;
    volatile INTreg *s2440INT = (INTreg *)INT_BASE;  
    DWORD dwTimerTemp;  

	// Mask and clear timer interrupt.
	//
    s2440INT->rINTMSK |= BIT_TIMER4;
    s2440INT->rSRCPND  = BIT_TIMER4;
    s2440INT->rINTPND  = BIT_TIMER4;

	// Change number of timer ticks in the period.
	//
	s2440PWM->rTCNTB4 = dwTicks;
	dwTimerTemp = s2440PWM->rTCON & (~(0xf << 20));

	s2440PWM->rTCON = dwTimerTemp | (2 << 20);	// Update TCVNTB4 and stop.
	s2440PWM->rTCON = dwTimerTemp | (1 << 20);	// One-shot mode and start.

	// Unmask the timer interrupt.
	//
    s2440INT->rINTMSK &= ~BIT_TIMER4;		
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲综合男人的天堂| 欧美日韩国产片| 日本道免费精品一区二区三区| 91在线你懂得| 4438亚洲最大| 日本一区二区三区在线观看| 一区二区三区**美女毛片| 欧美96一区二区免费视频| 成人一区二区三区| 欧美精品视频www在线观看| 久久久久久久综合| 亚洲综合一区二区精品导航| 久久成人麻豆午夜电影| aaa欧美色吧激情视频| 欧美一区二区三区免费观看视频 | 午夜精品福利一区二区蜜股av| 免费在线一区观看| 99久精品国产| 在线播放中文字幕一区| 中文一区在线播放| 丝袜a∨在线一区二区三区不卡| 国产精品自拍在线| 欧美视频第二页| 国产精品久线在线观看| 天天综合色天天| 99精品在线观看视频| 欧美成人在线直播| 亚洲综合一区在线| 不卡免费追剧大全电视剧网站| 欧美久久久久久久久久| 日韩一区有码在线| 国产乱子轮精品视频| 欧美日韩高清影院| 亚洲欧洲av色图| 国内精品伊人久久久久av影院| 色婷婷av一区二区三区软件| 久久久久国产精品免费免费搜索| 午夜精品久久一牛影视| 99久久伊人久久99| 久久色在线观看| 日韩精品免费专区| 色爱区综合激月婷婷| 亚洲国产精品精华液2区45| 美腿丝袜一区二区三区| 欧美性生活久久| 亚洲欧美在线观看| 国产成人av电影在线播放| 欧美成人精品二区三区99精品| 亚洲国产一区二区在线播放| 99精品国产热久久91蜜凸| 久久久久久久网| 韩国女主播一区| 欧美电影精品一区二区| 视频在线观看一区二区三区| 欧美三电影在线| 一区二区日韩av| 色菇凉天天综合网| 亚洲狠狠丁香婷婷综合久久久| 成人午夜私人影院| 欧美国产视频在线| 国产成+人+日韩+欧美+亚洲| 国产午夜久久久久| 国产成人综合自拍| 久久精品综合网| 国产精品一区二区x88av| 久久亚洲一级片| 国产高清无密码一区二区三区| 精品国产精品网麻豆系列| 开心九九激情九九欧美日韩精美视频电影| 欧美日韩国产中文| 亚洲chinese男男1069| 欧美日韩免费一区二区三区视频| 亚洲综合区在线| 欧美久久久影院| 日韩国产一二三区| 日韩精品一区二区三区在线 | 日韩精品最新网址| 蜜桃免费网站一区二区三区| 日韩美女在线视频| 九九**精品视频免费播放| 精品国偷自产国产一区| 国产在线精品一区二区| 久久精品视频在线免费观看| 丁香天五香天堂综合| 国产精品麻豆99久久久久久| 99久久精品一区| 亚洲自拍偷拍综合| 欧美丰满少妇xxxxx高潮对白 | 2020国产精品久久精品美国| 国产一区二区不卡在线| 国产精品入口麻豆九色| 92精品国产成人观看免费| 亚洲图片欧美综合| 欧美精品久久一区二区三区| 青青草国产精品亚洲专区无| 久久亚洲精华国产精华液 | 中文字幕免费不卡在线| 91视频xxxx| 五月天网站亚洲| 久久久久久久久免费| 99re这里都是精品| 性欧美大战久久久久久久久| 日韩免费一区二区| 成人性生交大合| 亚洲成人动漫av| 久久久久久日产精品| 欧美在线色视频| 久久精品国产一区二区三| 国产精品日韩成人| 欧美剧情片在线观看| 国产高清不卡一区| 亚洲精品免费在线观看| 91精品国产综合久久精品性色 | 久久久av毛片精品| 91丨九色丨蝌蚪丨老版| 日韩中文欧美在线| 中文字幕免费一区| 在线播放日韩导航| 高清不卡一区二区在线| 亚洲福利电影网| 国产三级一区二区| 7777精品伊人久久久大香线蕉的| 国产自产高清不卡| 一级精品视频在线观看宜春院| 日韩欧美中文字幕制服| 91首页免费视频| 久久97超碰国产精品超碰| 日韩理论片中文av| 精品久久久久久久久久久久包黑料| 成人黄色一级视频| 蜜桃视频一区二区三区| 亚洲精品大片www| 精品国产免费人成在线观看| 91老师国产黑色丝袜在线| 精品一区二区三区免费观看| 亚洲欧美激情一区二区| 精品久久一区二区三区| 在线精品亚洲一区二区不卡| 国产老肥熟一区二区三区| 图片区日韩欧美亚洲| 中文字幕在线播放不卡一区| 精品区一区二区| 欧美日韩国产大片| 91丨porny丨国产入口| 国产成人自拍在线| 麻豆91在线播放| 一区二区三区国产精华| 中文幕一区二区三区久久蜜桃| 9191精品国产综合久久久久久| 成人av电影在线网| 国产一区二区三区黄视频| 日本午夜精品视频在线观看| 《视频一区视频二区| 国产亚洲午夜高清国产拍精品| 欧美一区二区三区啪啪| 欧美日韩一区高清| 91国偷自产一区二区三区观看| 福利电影一区二区| 国内外精品视频| 奇米影视7777精品一区二区| 亚洲综合另类小说| 中文字幕一区日韩精品欧美| 久久久久久久综合狠狠综合| 日韩欧美不卡在线观看视频| 欧美日韩一区二区欧美激情| 91精品福利视频| 91免费视频观看| 不卡一卡二卡三乱码免费网站| 国产高清在线精品| 国产精品一区二区免费不卡| 国产在线观看一区二区| 精品一二三四区| 欧美bbbbb| 日韩在线观看一区二区| 五月天丁香久久| 亚洲成a天堂v人片| 亚洲第一av色| 偷拍亚洲欧洲综合| 五月天中文字幕一区二区| 亚洲不卡在线观看| 日韩电影一二三区| 看电影不卡的网站| 韩国v欧美v亚洲v日本v| 国产一区二区影院| 国产精品中文欧美| 国产精品538一区二区在线| 国产成人av影院| 高清国产一区二区| 91在线无精精品入口| 色婷婷激情综合| 欧美另类videos死尸| 欧美剧情片在线观看| 日韩欧美一级二级三级| 精品久久久久av影院| 国产调教视频一区| 国产精品卡一卡二卡三| 亚洲乱码国产乱码精品精可以看 | 欧美一区二区高清| 26uuu国产一区二区三区| 久久九九全国免费|