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

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

?? timer.c

?? 一個基于三星S3C2413的全部驅動程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
//=============================================================================
// File Name : Timer.c
// Function  : S3C2410 Watch-Dog and Timer
// Program   : Shin, On Pil (SOP)
// Date      : May 21, 2002
// Version   : 0.0
// History
//   0.0 : Programming start (February 27,2002) -> SOP
//=============================================================================
//=============================================================================
// File Name : Timer.c
// Function  : S3C24a0 Watch-Dog and PWM Timer
// Program   : Oh woo seok
// Date      : April 14, 2003
// Version   : 0.0
// History
//   0.0 : Programming start (April 14, 2003) 
//=============================================================================

#include <stdio.h>
#include <string.h>

#include "option.h"
#include "2413addr.h"
#include "system.h"
//#include "2413lib.h"
#include "timer.h"
#include "def.h"
#include "PLL.h"



static volatile int dmaDone;
volatile int variable0,variable1,variable2,variable3,variable4;


//=========================================================================


//=========================================================================


void * timer_func[][2]=
{
	(void *)Test_TimerInt,          	        "Timer Interrupt        ",
	(void *)Test_Timer,                    		"Timer Tout             ",
	(void *)Test_TimerDma,  	                "Timer DMA              ",
	0,0
};


void Ch10_PwmTimer_test(void)
{
	int i;
	
	printf("Menu of Timer function\n");
	// Wait until memory stick is inserted.
	
	while(1) {
		TimerSubMessage();
		printf("\nSelect(-1 to exit): ");
		i = GetIntNum();
		//printf("IN:%d.\n\n", i);
		if(i==-1) break;
		
		if(i>=0 && (i<(sizeof(timer_func)/3)) ) 
	    	( (void (*)(void)) (timer_func[i][0]) )();	// execute selected function.
	}

}

void TimerSubMessage(void)
{
	int i;
	
	
	i=0;	
	printf("\n\n");
	while(1)
	{   //display menu
	    printf("%2d:%s",i,timer_func[i][1]);
	    i++;
	    if((int)(timer_func[i][0])==0)
	    {
			printf("\n");
			break;
	    }
	    if((i%4)==0) printf("\n");
	}
}


//=========================================================================
//      SMDK24a0 TOUT configuration(GPCON_U:0x44800000)
//  GP23=PWM_TOUT3,GP22=PWM_TOUT2,GP21=PWM_TOUT1,GP20=PWM_TOUT0,
//  GP19=PWM_ECLK 

//
//Timer input clock frequency = PCLK/{prescaler value+1}/{divider value}
//{prescaler value} = 0 ~ 255   , {divider value} = 2,4,8,16
//
//  PWM Timer PWM_TOUT0/1/2/3/ECLK Test - 24a0
//=========================================================================

#define GPCONU_ABAIL (TRUE)  // if wanna GPGONU set "FALSE"

void Test_Timer(void)
{
    int save_GPB_CON, save_GPB_DAT;
    int Deadzone_test_flag= 1, PWM50_test_flag=0, Inverton_test_flag=0;
	int key;
	
    
    printf("[ PWM_TOUT 0,1,2,3 Test ]\n\n");    
    //printf("= Current Port Setting List =\n");
    //printf("rGPCON_U = 0x%8x,   rGPDAT = 0x%8x,   rGPUP= 0x%8x \n" ,rGPCON_U,rGPDAT,rGPUP);

    save_GPB_CON= rGPBCON;
    save_GPB_DAT= rGPBDAT;	
   
	

    // controls PCLK into PWMTIMER block 0 :disable, 1:enable
    //rCLKCON = rCLKCON & ~(0x100) | 0x100;
//    rPCLKCON = (1<<16);
    // IO port pull up control register : 0=enable, 1=disable   
    //rGPPU= rGPPU & ~(0x00f80000) | 0x00f80000;

    // IO port configuration register relative to TIMER
    rGPBCON=0x2aa;   //GPI0,GPI1,GPI2,GPI3,GPI4,
    
    // check the buffer writing, correctly
    //printf("= Changed Port Setting List =\n");    
    //printf("rGPCON_U = 0x%8x,   rGPDAT = 0x%8x,   rGPUP= 0x%8x \n" ,rGPCON_L,rGPDAT,rGPPU);
    	
LABEL:

    printf("[ Select Timer Clock ]\n");
    printf("[  prescaler0 | prescaler1 | divider\n");
    printf("a.       0                 0             1/2 \n");
    printf("b.       0                 0             1/4 \n");
    printf("c.       0                 0             1/8 \n");
    printf("d.       0                 0             1/16 \n");
//    printf("e.       0                 0             TCLK0 \n"); // not implemented in GPIO
    printf("f.     255              255           1/2 \n");
    printf("g.    255              255           1/4 \n");
    printf("h.    255              255           1/8 \n"); 
    printf("i.     255              255           1/16 \n");
//    printf("j.     255              255           TCLK1 \n"); // // not implemented in GPIO	
    printf("k.       0                 0             1/2 (Dead-zone value=40 \n");
    printf("l.       0                 0             1/2 (PWM 50%% \n");
    printf("m.     0                 0             1/2 (Invert on.off \n");
		
    printf("\nSelect the function to test : ");
    key = Uart_getc();
    printf("%c\n\n",key);    

    switch(key)
    {
	 case 'a'://All Interrupt, MUX 4 ~ 0 : 1/2 //Dead zone=1,Prescaler1=0,Prescaler0=0	
            rTCFG0 = rTCFG0 & ~(0xffffff) | 0x10000;     
            rTCFG1 = 0x0; 
            break;
	 case 'b'://All Interrupt, MUX 4 ~ 0 : 1/4 //Dead zone=1,Prescaler1=0,Prescaler0=0	
            rTCFG0 = rTCFG0 & ~(0xffffff) | 0x10000;     
            rTCFG1 = 0x1111; 
            break;
	 case 'c'://All Interrupt, MUX 4 ~ 0 : 1/8 //Dead zone=1,Prescaler1=0,Prescaler0=0	
            rTCFG0 = rTCFG0 & ~(0xffffff) | 0x10000;     
            rTCFG1 = 0x2222; 
            break;
	 case 'd'://All Interrupt, MUX 4 ~ 0 : 1/16 //Dead zone=1,Prescaler1=0,Prescaler0=0	
            rTCFG0 = rTCFG0 & ~(0xffffff) | 0x10000;     
            rTCFG1 = 0x3333; 
            break;
//	 case 'e'://All Interrupt, MUX 4 ~ 0 : TCLK0 //Dead zone=1,Prescaler1=0,Prescaler0=0	
//            rTCFG0 = rTCFG0 & ~(0xffffff) | 0x10000;     
//            rTCFG1 = 0x4444; 
//            break;
	 case 'f'://All Interrupt, MUX 4 ~ 0 : 1/2 //Dead zone=1,Prescaler1=255,Prescaler0=255	
            rTCFG0 = rTCFG0 & ~(0xffffff) | 0x1ffff;     
            rTCFG1 = 0x0; 
            break;
	 case 'g'://All Interrupt, MUX 4 ~ 0 : 1/4 //Dead zone=1,Prescaler1=255,Prescaler0=255	
            rTCFG0 = rTCFG0 & ~(0xffffff) | 0x1ffff;     
            rTCFG1 = 0x1111; 
            break;
	 case 'h'://All Interrupt, MUX 4 ~ 0 : 1/8 //Dead zone=1,Prescaler1=255,Prescaler0=255	
            rTCFG0 = rTCFG0 & ~(0xffffff) | 0x1ffff;     
            rTCFG1 = 0x2222; 
            break;
	 case 'i'://All Interrupt, MUX 4 ~ 0 : 1/16 //Dead zone=1,Prescaler1=255,Prescaler0=255	
            rTCFG0 = rTCFG0 & ~(0xffffff) | 0x1ffff;     
            rTCFG1 = 0x3333; 
            break;
//	case 'j'://All Interrupt, MUX 4 ~ 0 : TCLK1 //Dead zone=1,Prescaler1=255,Prescaler0=255	
//            rTCFG0 = rTCFG0 & ~(0xffffff) | 0x1ffff;     
//            rTCFG1 = 0x4444; 
//            break;
	 case 'k'://All Interrupt, MUX 1 ~ 0 : 1/2 //Dead zone=40,Prescaler1=0,Prescaler0=0	
            rTCFG0 = rTCFG0 & ~(0xffffff) | 0x280000;     
            rTCFG1 = 0x0; 
            Deadzone_test_flag = 1;			
            break;
	 case 'l'://All Interrupt, MUX 1 ~ 0 : 1/2 //Dead zone=1,Prescaler1=0,Prescaler0=0, PWM50%	
            rTCFG0 = rTCFG0 & ~(0xffffff) | 0x280000;     
            rTCFG1 = 0x0; 
            PWM50_test_flag = 1;			
            break;
	 case 'm'://All Interrupt, MUX 4 ~ 0 : 1/2 //Dead zone=1,Prescaler1=0,Prescaler0=0, Invert ON
            rTCFG0 = rTCFG0 & ~(0xffffff) | 0x280000;     
            rTCFG1 = 0x0; 
            Inverton_test_flag = 1;			
            break;
  			
        default:
	    rTCON   = 0x0;		

		rGPBCON=save_GPB_CON ;
        rGPBDAT=save_GPB_DAT;	
       
		return;
    }

////////////////////////////////////////////////////////////////////////////////////  
// Step1>> write the rTCNTBn and rTCMPBn
//(1/(PCLK/(Prescaler+1)/divider) * count(Max 65535) = Timer clock (Frequency)
////////////////////////////////////////////////////////////////////////////////////  

    rTCNTB0 = rTCNTB0 & ~(0xffff) | 2000;       //(1/(50MHz/69/2))  *  2000 =  5.5200 msec (181.159  Hz)
                                                //(1/(50.7MHz/69/2))*  2000 =  5.4437 msec (183.698  Hz)
                                                //(1/(50MHz/1/2))   *  2000 =  0.0800 msec ( 12.500 KHz)
                                                //(1/(50.7MHz/1/2)) *  2000 =  0.0788 msec ( 12.690 KHz)
    rTCNTB1 = rTCNTB1 & ~(0xffff) | 4000;       //(0.0000027600003) *  4000 = 11.0400 msec ( 90.579  Hz)
                                                //(0.0000027218935) *  4000 = 10.8875 msec ( 91.848  Hz)
                                                //(0.00000004)      *  4000 =  0.1600 msec (  6.250 KHz)
                                                //(0.0000000394477) *  4000 =  0.1577 msec (  6.337 KHz)
    rTCNTB2 = rTCNTB2 & ~(0xffff) | 5000;       //(0.0000027600003) *  5000 = 13.8000 msec ( 72.463  Hz)
                                                //(0.0000027218935) *  5000 = 13.6094 msec ( 73.478  Hz)
                                                //(0.00000004)      *  5000 =  0.2000 msec (  5.000 KHz)
                                                //(0.0000000394477) *  5000 =  0.1972 msec (  5.070 KHz)
    rTCNTB3 = rTCNTB3 & ~(0xffff) | 10000;      //(0.0000027600003) * 10000 = 27.6000 msec ( 36.231  Hz)
                                                //(0.0000027218935) * 10000 = 27.2189 msec ( 36.739  Hz)
                                                //(0.00000004)      * 10000 =  0.4000 msec (  2.500 KHz)
                                                //(0.0000000394477) * 10000 =  0.3944 msec (  2.535 KHz)


   //printf("rTCNTB0=%d |rTCNTB1=%d |rTCNTB2=%d | rTCNTB3=%d \n",rTCNTB0,rTCNTB1,rTCNTB2,rTCNTB3);

   if(PWM50_test_flag ==1 ){
       rTCMPB0 =  2000;     rTCMPB1 =  4000;    rTCMPB2 =  5000;    rTCMPB3 = 10000;
//	   rTCMPB0 =  4000;     rTCMPB1 =  8000;    rTCMPB2 =  5000;    rTCMPB3 = 10000;
	PWM50_test_flag = 0;
   }
   else{ 
//       rTCMPB0 =  2000 - 1000;    rTCMPB1 =  4000 - 2000;    rTCMPB2 =  5000 - 2500;    rTCMPB3 = 10000-5000;
	   rTCMPB0 = 1000;    rTCMPB1 =1000;    rTCMPB2 =1000;    rTCMPB3 = 1000;
   }

   //printf("rTCMPB0=%d |rTCMPB1=%d |rTCMPB2=%d | rTCMPB3=%d \n",rTCMPB0,rTCMPB1,rTCMPB2,rTCMPB3);


////////////////////////////////////////////////////////////////////////////////////
//	Step2.>> Set the manual update bit[TCON] of the corresponging timer. it is recommended to configure
//	   the inverter on/off bit
////////////////////////////////////////////////////////////////////////////////////

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人精品亚洲日本在线桃色| 亚洲高清免费视频| 日韩三级免费观看| 欧美午夜一区二区三区免费大片| 成人蜜臀av电影| 成人自拍视频在线观看| 成人免费观看视频| voyeur盗摄精品| 92精品国产成人观看免费| 日本丶国产丶欧美色综合| 色就色 综合激情| 色婷婷久久99综合精品jk白丝 | 97se亚洲国产综合自在线| 成人18视频在线播放| 91日韩一区二区三区| 欧美三级中文字幕| 日韩手机在线导航| 欧美国产日产图区| 亚洲另类色综合网站| 三级成人在线视频| 韩国欧美一区二区| 日本韩国一区二区| 制服.丝袜.亚洲.另类.中文| 精品美女一区二区| 国产精品美女久久久久久2018| 中文字幕一区免费在线观看| 亚洲精品一卡二卡| 麻豆91在线播放免费| av中文一区二区三区| 在线观看欧美日本| www国产亚洲精品久久麻豆| 亚洲视频一二区| 美女任你摸久久| 国产a级毛片一区| 欧美日韩精品免费| 国产偷国产偷精品高清尤物| 玉米视频成人免费看| 国模冰冰炮一区二区| 91福利国产精品| 国产午夜精品久久| 日本女人一区二区三区| 91在线云播放| 久久免费视频色| 天堂成人国产精品一区| 成人黄色av电影| 精品欧美乱码久久久久久 | 欧美日韩国产a| 国产情人综合久久777777| 性感美女久久精品| 一本久道久久综合中文字幕| www激情久久| 免费成人小视频| 在线观看国产精品网站| 亚洲国产高清不卡| 免费观看一级特黄欧美大片| 欧美天天综合网| 亚洲欧美视频一区| 不卡视频免费播放| 国产日韩欧美精品在线| 男男视频亚洲欧美| 欧美高清你懂得| 亚洲综合免费观看高清完整版| 成人黄色小视频在线观看| 久久婷婷国产综合精品青草| 免费成人在线观看| 日韩视频一区二区三区| 天天综合色天天综合色h| 色噜噜狠狠一区二区三区果冻| 久久久噜噜噜久久中文字幕色伊伊| 日韩专区一卡二卡| 欧美日韩中文字幕精品| 亚洲一区二区在线免费观看视频| 91女厕偷拍女厕偷拍高清| 国产欧美va欧美不卡在线 | 成人欧美一区二区三区黑人麻豆| 国内精品自线一区二区三区视频| 欧美亚洲国产一区在线观看网站 | 精品国产成人系列| 麻豆久久一区二区| 日韩免费看的电影| 国产一区高清在线| 久久女同性恋中文字幕| 顶级嫩模精品视频在线看| 国产欧美日韩综合| 99久久er热在这里只有精品66| 亚洲欧洲一区二区在线播放| 91免费视频大全| 亚洲国产综合在线| 91精品国产福利| 狠狠色丁香婷婷综合| 欧美激情在线看| 色哟哟精品一区| 亚洲成人你懂的| 精品久久久久久久久久久久久久久| 精久久久久久久久久久| 欧美激情在线一区二区| 色狠狠综合天天综合综合| 图片区小说区国产精品视频| 欧美va亚洲va| av激情成人网| 日韩精品一级中文字幕精品视频免费观看| 欧美卡1卡2卡| 国产成人精品aa毛片| 一区二区三区日本| 精品美女在线播放| 色欲综合视频天天天| 久久综合综合久久综合| 中文天堂在线一区| 欧美日韩一区二区三区四区| 久久国产成人午夜av影院| 亚洲图片另类小说| 91精品一区二区三区久久久久久 | 国内精品视频一区二区三区八戒| 亚洲国产高清不卡| 日韩小视频在线观看专区| 国产成人超碰人人澡人人澡| 亚洲二区在线视频| 国产偷国产偷精品高清尤物| 欧美日韩国产精品成人| 国产成人精品免费在线| 蜜芽一区二区三区| 1024精品合集| 久久免费电影网| 91精品在线麻豆| 在线观看成人免费视频| 粉嫩av亚洲一区二区图片| 青青草原综合久久大伊人精品| 亚洲国产精品国自产拍av| 在线观看91av| 欧美性生活一区| 成人午夜精品在线| 美女任你摸久久| 日本女优在线视频一区二区| 亚洲制服欧美中文字幕中文字幕| 久久久久一区二区三区四区| 日韩午夜av电影| 欧美一区二区精美| 欧美伊人久久久久久久久影院 | 日韩精品自拍偷拍| 欧美伦理视频网站| 在线视频观看一区| 成人h版在线观看| 国产ts人妖一区二区| 久久精品国产免费看久久精品| 亚洲一区二区三区激情| 亚洲一区视频在线| 亚洲一二三区在线观看| 亚洲与欧洲av电影| 亚洲精品视频观看| 樱花影视一区二区| 亚洲制服欧美中文字幕中文字幕| 亚洲裸体在线观看| 一区二区三区蜜桃网| **性色生活片久久毛片| 国产精品久久久久影视| 欧美国产日韩亚洲一区| 中文字幕中文字幕一区二区| 国产香蕉久久精品综合网| 久久久久9999亚洲精品| 国产欧美日韩中文久久| 国产精品成人在线观看| 亚洲欧美日韩国产综合| 亚洲丝袜美腿综合| 一二三四区精品视频| 婷婷国产v国产偷v亚洲高清| 日韩综合小视频| 国产一区二区在线免费观看| 成人性视频免费网站| 91麻豆精品秘密| 欧美三级一区二区| 欧美mv日韩mv亚洲| 国产亚洲欧美激情| 亚洲品质自拍视频网站| 亚洲第一福利视频在线| 久久不见久久见免费视频1| 国产+成+人+亚洲欧洲自线| 91视频观看免费| 日韩视频免费观看高清完整版在线观看 | 国产清纯白嫩初高生在线观看91| 国产免费观看久久| 亚洲一区在线播放| 国产在线看一区| 91美女在线观看| 日韩欧美卡一卡二| 国产精品福利av| 日本 国产 欧美色综合| 国产精品一区二区你懂的| 91成人免费在线视频| ww亚洲ww在线观看国产| 亚洲精品久久嫩草网站秘色| 爽好久久久欧美精品| 福利91精品一区二区三区| 欧美在线视频你懂得| 久久久一区二区| 香蕉成人伊视频在线观看| 成人美女视频在线看| 日韩免费成人网| 亚洲国产sm捆绑调教视频| 国产精品99久| 日韩欧美精品在线视频|