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

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

?? watchdog.c

?? Samsung S3C2443 Test program source code
?? C
字號:
/*======================================================================

 Project Name : S3C2443 verification project

 Copyright 2006 by Samsung Electronics, Inc.
 All rights reserved.

 Project Description :
 This software is only for verifying functions of the S3C2443. 
 Anybody can use this code without our permission.

 File Name    : watchdog.c
 Description  : S3C2443 WDT module code
 Author       : Junon Jeon
 Dept         : AP
 Created Date : 2006.06.02
 Version      : 0.0
 History
   R0.0 (2006.06.02): Junon draft
		- This code is derived from S3C2413A watchdog test code.
		
=======================================================================*/


#include <stdio.h>
#include "option.h"
#include "2443addr.h"
#include "watchdog.h"
#include "system.h"
#include "console.h"


volatile int isWdtInt;

void __irq ISR_Watchdog(void);
void WDT_ManualTest(void);
void WDT_AutoTest(void); 
void WDT_Open(void); 
void WDT_Close(void); 
unsigned int WDT_ResetFunc(void);
unsigned int GetWDTdivider(unsigned int sel);


void * func_wdt_test[][2]=
{   
	//  						"123456789012345678901"
   	(void *)WDT_ManualTest,		"Manual Reset Test    ", 
   	(void *)WDT_AutoTest,		"Automatic Test       ", 
   	0,0
};


void Test_Watchdog(void)
{
	int i;
		
	while(1)
	{
		i=0;
		printf("\n\n=============== Watchdog Function Test ===============\n\n");
		
		while(1)
		{   //display menu
			printf("%2d:%s",i,func_wdt_test[i][1]);
			i++;
			if((int)(func_wdt_test[i][0])==0)
			{
				printf("\n");
				break;
			}
			if((i%4)==0)
			printf("\n");
		}
		printf("\n======================================================\n");
		printf("Select #Item or Press Enter key to exit : ");
		i = GetIntNum(); 
		if(i==-1) break;		// return.
		if(i>=0 && (i<((sizeof(func_wdt_test)-1)/8)) )	// select and execute...
			( (void (*)(void)) (func_wdt_test[i][0]) )();
	}
	
}


////////////////////////////// Library function /////////////////////////////

void __irq ISR_Watchdog(void) // for interrupt test
{
	if(rSUBSRCPND & BIT_SUB_WDT)
	{
		rSUBSRCPND = BIT_SUB_WDT;
		printf("%d ",++isWdtInt);
	}
	ClearPending(BIT_WDT_AC97);
}


unsigned int GetWDTdivider(unsigned int sel)
{
	unsigned int ret;
	
	switch(sel)
	{
		case 0 :
			ret = 16;
			break;
		case 1 :
			ret = 32;
			break;
		case 2 :
			ret = 64;
			break;
		case 3 :
			ret = 128;
			break;		     				
		default :
			ret = 16;
			break;
	}
	return ret;
}


void WDT_Open(void) 
{
    rINTSUBMSK  &= ~(BIT_SUB_WDT);           
    rINTMSK  &= ~(BIT_WDT_AC97); //Watch dog Interrupt service is available    
     
    pISR_WDT_AC97= (unsigned )ISR_Watchdog;
    isWdtInt = 0;
    rWTCON = 0; // wdt reset & interrupt disable
}


void WDT_Close(void) 
{
    rINTSUBMSK |= BIT_SUB_WDT;
    rINTMSK |= BIT_WDT_AC97;         //WDT Interrupt Mask	
}


unsigned int WDT_ResetFunc(void)
{
	// Reset function test
	rWTCON &= ~(1<<5); // WDT disable
	printf("\n Do you want to test WDT Reset function? 'y' or 'n'\n");
	if (getchar()=='y') 
	{
		printf(" System would be reset....\n");
		rWTCON |= (1<<5)|1; // WDT enable & reset enable
		return 1;
	}
	else 
	{
		rWTCON |= (1<<5); // WDT enable only
		return 0;
	}
}


////////////////////////////// Test Function /////////////////////////////

void WDT_ManualTest(void)
{
	unsigned int pres_val, clk_div, wt_count, s_factor;
	unsigned int temp_num;
	
	WDT_Open();
	
	// Timer function test    
    printf(" Select Prescaler value [0(D)~255] : ");
    pres_val = (unsigned int)GetIntNum();
    if (pres_val > 255) 
    {
    	printf(" Typed number is over 255! Be set as 0!\n");
    	pres_val = 0;
    }
    
    printf(" Select Clock division factor [0:16(D), 1:32, 2:64, 3:128] : ");
    clk_div = (unsigned int)GetIntNum();
    if (clk_div > 3) 
    {
    	printf(" Typed number is over 3! Be set as 0!\n");
    	clk_div = 0;    
    }
    
    rWTCON = (pres_val<<8) | (clk_div<<3) | (1<<2); //Prescaler,Clock division,Interrupt enable
    temp_num = GetWDTdivider(clk_div);
    wt_count = PCLK/(pres_val+1)/temp_num;	 // count as 1 second
    s_factor = (unsigned int)(wt_count/0xffff) + 1;
    if(wt_count > 0xffff) 
    {
    	printf(" Count down interval changed from 0x%x to 0xffff \n",wt_count);
    	wt_count = 0xffff;
    }
    rWTDAT = wt_count; // about 1 sec. or under : interval of interrupt
    rWTCNT = wt_count;

	if (WDT_ResetFunc())
    	printf(" WDT Reset after 1 period time. \n");	   
	else 
	{
		printf(" WDT only timer function check for 3 seconds! \n"); 
	    printf(" Interrupt count!!\n ");	   
		while(isWdtInt < 3*s_factor) // about 3 seconds or over
			if (Uart_GetKey()) break;
	}
 
	WDT_Close();
}


void WDT_AutoTest(void) // timer function
{
	unsigned int pres_val, clk_div, wt_count, s_factor;
	unsigned int temp_num, end_flag = 0;
	
	WDT_Open();
	
	// Timer function test    
    printf(" Watchdog timer function test \n");
    for (pres_val=0;pres_val<256;pres_val++)
    {
    	for(clk_div=0;clk_div<4;clk_div++)
    	{
		    rWTCON = (pres_val<<8)|(1<<5)|(clk_div<<3)|(1<<2); //Prescaler=0x2a(42),Clock division 128,Interrupt enable
		    temp_num = GetWDTdivider(clk_div);
		    wt_count = PCLK/(pres_val+1)/temp_num;  // count as 1 second
		    s_factor = (unsigned int)(wt_count/0xffff) + 1;
		    if(wt_count > 0xffff) 
		    {
		    	printf(" Count down interval changed from 0x%x to 0xffff \n",wt_count);
		    	wt_count = 0xffff;
		    }
		    rWTDAT = wt_count; // for 1 sec. interval
		    rWTCNT = wt_count;
		    rWTCON = rWTCON | (1<<5);   //Watch-dog timer enable

		    printf(" WDT input clock changed after wdt interrupt happened 1 time.\n");

			while(isWdtInt < s_factor) // about 1 seconds    		
				if (Uart_GetKey()) 
				{
					end_flag = 1;
					break;
				}
			printf(" Prescaler : %d, Clock divider : %d  Test OK!!\n", pres_val, clk_div);
			isWdtInt = 0;
    	}
    	if (end_flag == 1) break;
    }   
	printf(" Timer function test ok!\n");

	rWTCON &= ~(1<<5); // WDT disable
	printf(" WDT Reset after about 1 seconds. \n");	   
	rWTCON |= (1<<5)|1; // WDT enable & reset enable
	
	WDT_Close();
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩经典一区二区| 国产一区二区三区在线观看免费视频 | 日韩三级在线观看| 美腿丝袜一区二区三区| 精品日韩欧美在线| 国产成人精品一区二区三区网站观看| 精品捆绑美女sm三区| 国产一区二区毛片| 1024精品合集| 欧美精品久久天天躁| 精品一区二区在线视频| 国产精品久久久久久久蜜臀| av在线不卡网| 天天做天天摸天天爽国产一区 | 一区二区三区四区在线免费观看| 欧美亚男人的天堂| 秋霞电影网一区二区| 久久九九全国免费| 欧美三级韩国三级日本三斤| 日韩精品电影一区亚洲| 久久精品亚洲乱码伦伦中文| 色婷婷av一区二区三区gif | 国产露脸91国语对白| 国产精品美女久久久久aⅴ | 精品国产伦理网| 波多野洁衣一区| 日韩精品视频网站| 国产欧美一区二区精品秋霞影院 | 国产一区二区三区国产| 中文字幕亚洲在| 欧美一级生活片| aaa欧美大片| 麻豆成人av在线| 一区二区久久久| 久久老女人爱爱| 欧美日韩一区小说| 成人免费视频免费观看| 日韩电影免费一区| 亚洲欧美日韩电影| 久久久不卡影院| 欧美一区二区三区四区在线观看| 91原创在线视频| 国产一区二区三区日韩| 天天操天天色综合| 亚洲另类在线制服丝袜| 国产亚洲欧美在线| 欧美一级夜夜爽| 欧美日韩国产天堂| 色哟哟在线观看一区二区三区| 国产一区二区伦理片| 日韩国产在线观看| 亚洲综合精品久久| 国产精品国产精品国产专区不片| 精品国产一区久久| 欧美精品v国产精品v日韩精品| 色噜噜偷拍精品综合在线| 成人av资源在线观看| 国产原创一区二区| 久久精品国产秦先生| 日日欢夜夜爽一区| 亚洲va中文字幕| 亚洲自拍都市欧美小说| 自拍偷拍亚洲欧美日韩| 国产精品乱码久久久久久| 国产亚洲精品中文字幕| 欧美zozozo| 欧美精品一区二区在线观看| 欧美一区二区三区免费在线看 | 精品国产污污免费网站入口| 欧美久久久久中文字幕| 欧洲亚洲国产日韩| 欧美在线色视频| 91福利视频网站| 一本久道中文字幕精品亚洲嫩| 成人精品一区二区三区中文字幕| 国产激情视频一区二区三区欧美 | 欧美一区二区在线视频| 91精品国产综合久久小美女| 欧美群妇大交群的观看方式| 91官网在线观看| 欧美日韩精品久久久| 欧美裸体bbwbbwbbw| 制服丝袜国产精品| 日韩三级高清在线| 亚洲精品在线免费观看视频| 久久久久久久综合狠狠综合| 久久午夜电影网| 日本一区二区三区四区| 国产精品美女久久久久久久久 | 黑人精品欧美一区二区蜜桃| 国产一区久久久| 国产精品18久久久久| 国产成人啪午夜精品网站男同| 国产黄人亚洲片| 成人免费av网站| 欧美怡红院视频| 欧美一区二区三区啪啪| 久久精品在这里| 亚洲日本中文字幕区| 亚洲小少妇裸体bbw| 激情综合亚洲精品| 成熟亚洲日本毛茸茸凸凹| 色综合久久六月婷婷中文字幕| 欧美视频一二三区| 久久久久久久综合色一本| 亚洲人123区| 男男视频亚洲欧美| 成人动漫一区二区在线| 欧美日韩精品一二三区| 久久婷婷色综合| 亚洲裸体在线观看| 久久精品国内一区二区三区| 成人自拍视频在线| 欧美日韩亚洲综合一区| 久久久久国产精品免费免费搜索| 一区二区三区高清| 国产精品综合一区二区三区| 色综合久久久久| 精品国产乱码久久久久久老虎| 国产欧美精品一区| 视频一区视频二区在线观看| 国产成人丝袜美腿| 欧美福利一区二区| 亚洲欧洲日韩综合一区二区| 日韩av高清在线观看| 9久草视频在线视频精品| 欧美一区二区精品| 一区二区三区**美女毛片| 国产老女人精品毛片久久| 欧美日韩不卡在线| 综合电影一区二区三区 | 成人黄色免费短视频| 91精品国产综合久久久久| 成人欧美一区二区三区在线播放| 日本免费在线视频不卡一不卡二 | 亚洲成人av福利| 成人黄色网址在线观看| 日韩三级av在线播放| 一区二区不卡在线播放| 国产99久久精品| 精品福利视频一区二区三区| 午夜精品一区二区三区三上悠亚| 不卡一区中文字幕| 中文无字幕一区二区三区 | www.激情成人| 欧美大片国产精品| 日日夜夜精品视频免费| 在线观看国产精品网站| 亚洲欧美中日韩| 国产精品中文字幕一区二区三区| 欧美日韩亚洲综合一区二区三区 | 亚洲成av人片一区二区三区| 9人人澡人人爽人人精品| 国产拍揄自揄精品视频麻豆 | 国产一区二区福利视频| 日韩精品中文字幕在线不卡尤物| 亚洲妇熟xx妇色黄| 欧美日韩免费电影| 一区二区欧美视频| 欧美在线观看一二区| 亚洲午夜久久久久久久久电影院| 波多野结衣一区二区三区| 中文字幕精品三区| 成人av中文字幕| 国产精品久久久99| eeuss鲁片一区二区三区| 国产日韩欧美高清在线| 成人免费视频视频在线观看免费 | 亚洲色图在线视频| 日本精品一级二级| 亚洲一线二线三线久久久| 欧美在线影院一区二区| 亚洲制服欧美中文字幕中文字幕| 91在线云播放| 一区二区三区免费看视频| 欧美四级电影网| 奇米一区二区三区av| 日韩欧美一级精品久久| 激情综合网最新| 国产欧美日韩精品在线| 99久久久免费精品国产一区二区 | 丝瓜av网站精品一区二区| 91超碰这里只有精品国产| 蜜臀av性久久久久蜜臀aⅴ| 日韩欧美一区中文| 国产精品自拍一区| 亚洲欧美日韩国产综合在线| 欧美在线你懂得| 久久草av在线| 国产精品对白交换视频| 91视频.com| 日韩综合在线视频| 久久精品一区四区| 日本道免费精品一区二区三区| 午夜影视日本亚洲欧洲精品| 日韩欧美色电影| 99这里都是精品| 日韩精品五月天| 亚洲国产成人私人影院tom| 欧美三区在线视频|