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

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

?? timer.c

?? 三星 s3c6400測試代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/**************************************************************************************
* 
*	Project Name : S3C6400 Validation
*
*	Copyright 2006 by Samsung Electronics, Inc.
*	All rights reserved.
*
*	Project Description :
*		This software is only for validating functions of the S3C6400.
*		Anybody can use this software without our permission.
*  
*--------------------------------------------------------------------------------------
* 
*	File Name : timer.c
*  
*	File Description : This file implements the API functons for Timer (PWM, WDT).
*
*	Author : Woojin.Kim
*	Dept. : AP Development Team
*	Created Date : 2006/12/27
*	Version : 0.1 
* 
*	History"
*	- Created(Woojin.Kim 2006/12/27)
*     - Added DelayfrTimer(Woojin.Kim 2007/02/12)
*     - Added Start, Stoptimer (Woojin,Kim 2007/02/15)
*	- Added CalibrateDelay(Haksoo,Kim 2007/02/17)
**************************************************************************************/

#include "option.h"
#include "library.h"
#include "sfr6400.h"
#include "system.h"
#include "timer.h"
#include "intc.h"
#include "sysc.h"
#include "gpio.h"

// Interrupt Handler Global valiable
   volatile u32 g_uIntCounter0 = 0;
   volatile u32 g_uIntCounter1 = 0;
   volatile u32 g_uIntCounter2 = 0;
   volatile u32 g_uIntCounter3 = 0;
   volatile u32 g_uIntCounter4 = 0;
   volatile u32 g_uIntCounterWT = 0;
   volatile u32 g_PWMDmaDone;
	
//////////
// Function Name : PWM_UserSelect
// Function Description : This function set up Timers by User's Inputs
// Input :	uTimer [0~4]
//			uPrescaler [1~256]
//			uDivider [0:1/1	1:1/2	2:1/4	3:1/8	4:1/16	5:extCLK]
//			uTCNTB [1~2^31]
//			uTCMPB [1~2^31]
//			uEnDz, uEnDMA, uAutoreload, uEnInverter, uEnInt [0:Disable	1:Enbale]
//			uDzlen [0~255]
// Output : NONE
// Version : v0.1

void PWM_UserSelect(void)
{
	s32	sTimer;
	s32	sPrescaler;
	s32  sDivider;
	s32  sEnDz;
	s32  sDzlen;
	s32  sAutoreload;
	s32  sEnInverter;
	s32 	sEnInt;
	s32	sEnDMA;
	s32  sTCNTB;
	s32  sTCMPB;

	float fTimerclk;
	float fTimerfreq;
	u32	uTemp0;
	u32	uTemp1;
	u32	uTemp2;
	u32  uTemp3;
	s32  sContinue;
	u32 uOpClk;

	
 uOpClk = g_PCLK;			


	while(1)
{
//--------------------select timer -------------------------	

	printf(" Select Timer [0~4] :");
	sTimer = GetIntNum();
	if ( sTimer ==-1)
		{
			printf("\n");
			break;
		}

		GPIO_SetFunctionEach(eGPIO_F,eGPIO_13,2);		//PWM Ext
		GPIO_SetFunctionEach(eGPIO_F,eGPIO_14,2);		//PWM Tout0
		GPIO_SetFunctionEach(eGPIO_F,eGPIO_15,2);		//PWM Tout1
	
		printf("\n");


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

//--------------------select prescaler-----------------------	
	printf("\nSelect prescaler value [1~256] : ");
	sPrescaler = GetIntNum();
	if(sPrescaler == -1)
	{
		sPrescaler = 1;
	}
	else
	{

	}	

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

//--------------------select dividerMUX---------------------	
	printf("\nSelect dividerMUX value \n ");
	printf("0. 1/1     1. 1/2     2. 1/4     3. 1/8     4. 1/16    5. externalTCLK1\n");
	printf("[0~5] :");
	sDivider = GetIntNum();
	if(sDivider== -1)
	{
		sDivider= 1;

	}
	else if (sDivider == 5 )
	{
	printf("\n How much External CLK do you connect ?\n");
	printf("MHz : ");
	
	uOpClk =  GetIntNum()*1000000;
	
	}	


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

//--------------------select Deadzone----------------------
	printf("\nSelect Deadzone\n");
	printf("0.Disable     1.Enable\n");
	printf("[0~1]:");
	sEnDz = GetIntNum();

	if(sEnDz== -1)
	{
		sEnDz= 0;

	}
	else
	{

	}	


	if(sEnDz == 1)
	{
		printf("\nSelect Deadzone Length\n");
		printf("[0~255]: ");
		sDzlen = GetIntNum();

		if(sDzlen== -1)
		{
			sDzlen= 20;

		}
		else
		{

		}	

		
	}
	else
	{
	sDzlen = 0;
	}
	


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

//--------------------select Auto-reload---------------------
		
	printf("\nSelect Auto-reload\n");
	printf("0. One-shot     1. Auto-reload \n");
	printf("[0,1] :");
	sAutoreload = GetIntNum();
	if(sAutoreload == -1)
	{
		sAutoreload = 1;

	}
	else
	{

	}
	
			


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


//--------------------select Inverter enable------------------
	printf("\nSelect Inverter Enable");
	printf("0. Disable     1. Enblae");
	printf("[0.1] : ");
	sEnInverter = GetIntNum();

	if(sEnInverter == -1)
	{
		sEnInverter = 0;

	}
	else
	{

	}


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


//--------------------select interrupt enable------------------

	printf("\nSelect Interrupt Enable");
	printf("0. Disable     1. Enblae");
	printf("[0.1] : ");
	sEnInt = GetIntNum();
	if(sEnInt == -1)
	{
		sEnInt = 1;

	}
	else
	{

	}

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


//--------------------select DMA enable---------------------
	printf("\nSelect DMA Enable");
	printf("0. Disable     1. Enblae");
	printf("[0.1] : ");
	sEnDMA = GetIntNum();

	if(sEnDMA== -1)
	{
		sEnDMA = 0;

	}
	else
	{

	}

	
	if(sEnDMA == 1)
	{
		sEnDMA = sTimer+1;
	}




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


//--------------------select TCNTB-----------------------	
	printf("\nSelect TCNTB value  : ");
	sTCNTB = GetIntNum();
	if(sTCNTB == -1)
	{
		sTCNTB = 2000;

	}
	else
	{

	}	


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


//--------------------select TCMPB-----------------------	
	printf("\nSelect TCMPB value  : ");
	sTCMPB = GetIntNum();
	if(sTCMPB == -1)
	{
		sTCMPB = 1000;

	}
	else
	{

	}	


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

//-----------------------Set SFRs--------------------------


	
		uTemp0 = Inp32(rTCFG1);
		uTemp0 = (uTemp0 & (~(0xf<<4*sTimer))& (~(1<<20))) |(sEnDMA<<20)|(sDivider<<4*sTimer);
		Outp32(rTCFG1,uTemp0);

		uTemp0 = Inp32(rTINT_CSTAT);
		uTemp0 = (uTemp0 & (~(1<<sTimer)))|(sEnInt<<(sTimer));
		Outp32(rTINT_CSTAT,uTemp0);

		switch(sTimer)
			{
			case 0:
				uTemp0 = Inp32(rTCON);
				uTemp0 = uTemp0 & (0xfffffffe);
				Outp32(rTCON, uTemp0); 								// Timer0 stop

				uTemp0 = Inp32(rTCFG0);
				uTemp0 = (uTemp0 & (~(0xff00ff))) | ((sPrescaler-1)<<0) |(sDzlen<<16);
				Outp32(rTCFG0, uTemp0);
				
				Outp32(rTCNTB0, sTCNTB);
				Outp32(rTCMPB0, sTCMPB);

				uTemp1 = Inp32(rTCON);
				uTemp1 = (uTemp1 & (~(0x1f))) |(sEnDz<<4)|(sAutoreload<<3)|(sEnInverter<<2)|(1<<1)|(0<<0);
				Outp32(rTCON, uTemp1);									//timer0 manual update
				uTemp1 = (uTemp1 & (~(0x1f))) |(sEnDz<<4)|(sAutoreload<<3)|(sEnInverter<<2)|(0<<1)|(1<<0);				
				Outp32(rTCON, uTemp1);									// timer0 start

				break;
			case 1:
				uTemp0 = Inp32(rTCON);
				uTemp0 = uTemp0 & (0xfffffeff);
				Outp32(rTCON, uTemp0); 								// Timer1 stop

				uTemp0 = Inp32(rTCFG0);
				uTemp0 = (uTemp0 & (~(0xff00ff))) | ((sPrescaler-1)<<0) |(sDzlen<<16);
				Outp32(rTCFG0, uTemp0);
				
				Outp32(rTCNTB1, sTCNTB);
				Outp32(rTCMPB1, sTCMPB);

				uTemp1 = Inp32(rTCON);
				uTemp1 = (uTemp1 & (~(0xf00))) | (sAutoreload<<11)|(sEnInverter<<10)|(1<<9)|(0<<8);
				Outp32(rTCON,uTemp1); 									// timer1 manual update
				uTemp1 = (uTemp1 & (~(0xf00))) | (sAutoreload<<11)|(sEnInverter<<10)|(0<<9)|(1<<8);				
				Outp32(rTCON,uTemp1); 									// timer1 start


				break;
					
			case 2:
				uTemp0 = Inp32(rTCON);
				uTemp0 = uTemp0 & (0xffffefff);
				Outp32(rTCON, uTemp0); 								// Timer2 stop

				uTemp2 = Inp32(rTCFG0);
				uTemp2 = (uTemp2 & (~(0xffff00)))|((sPrescaler-1)<<8)|(sDzlen<<16);
				Outp32(rTCFG0, uTemp2);
				
				Outp32(rTCNTB2, sTCNTB);
				Outp32(rTCMPB2, sTCMPB);

				uTemp3 = Inp32(rTCON);
				uTemp3 = (uTemp3 & (~(0xf000)))|(sAutoreload<<15)|(sEnInverter<<14)|(1<<13)|(0<<12);
				Outp32(rTCON, uTemp3); 								// timer2 manual update

				uTemp3 = (uTemp3 & (~(0xf000)))|(sAutoreload<<15)|(sEnInverter<<14)|(0<<13)|(1<<12);
				Outp32(rTCON,uTemp3);									 // timer2 start

				break;
				
			case 3:
				uTemp0 = Inp32(rTCON);
				uTemp0 = uTemp0 & (0xfffeffff);
				Outp32(rTCON, uTemp0);									 // Timer3 stop

				uTemp2 = Inp32(rTCFG0);
				uTemp2 = (uTemp2 & (~(0xffff00)))|((sPrescaler-1)<<8)|(sDzlen<<16);
				Outp32(rTCFG0, uTemp2);
				
				Outp32(rTCNTB3, sTCNTB);
				Outp32(rTCMPB3, sTCMPB);

				uTemp3 = Inp32(rTCON);
				uTemp3 = (uTemp3 &(~(0xf0000)))|(sAutoreload<<19)|(sEnInverter<<18)|(1<<17)|(0<<16);
				Outp32(rTCON, uTemp3); 								// timer3 manual update
				uTemp3 = (uTemp3 &(~(0xf0000)))|(sAutoreload<<19)|(sEnInverter<<18)|(0<<17)|(1<<16);
				Outp32(rTCON,uTemp3); 									// timer3 start

				break;

			case 4:
				uTemp0 = Inp32(rTCON);
				uTemp0 = uTemp0 & (0xffefffff);
				Outp32(rTCON, uTemp0);									 // Timer4 stop
				
				uTemp2 = Inp32(rTCFG0);
				uTemp2 = (uTemp2 & (~(0xffff00)))|((sPrescaler-1)<<8)|(sDzlen<<16);
				Outp32(rTCFG0, uTemp2);
				
				Outp32(rTCNTB4, sTCNTB);

				uTemp3 = Inp32(rTCON);
				uTemp3 = (uTemp3 & (~(0xf00000)))|(sAutoreload<<22)|(1<<21)|(0<<20);
				Outp32(rTCON,uTemp3); 									// timer4 manual update

				uTemp3 = (uTemp3 & (~(0xf00000)))|(sAutoreload<<22)|(0<<21)|(1<<20);				
				Outp32(rTCON, uTemp3);									 // timer4 start

				break;

			}

		if (sDivider == 5)		// Using External TCLK
			{
			fTimerclk = (1/(float)uOpClk)*sTCNTB*1000;			
			fTimerfreq = 1/fTimerclk;
			printf("Timer = %d\n",sTimer);
			printf("OpCLK = %d \n",uOpClk);
			printf("Timer Clock = %f msec , Timer Frequency = %f Khz\n\n",fTimerclk,fTimerfreq);
			}

		else
			{
			//(1/(PCLK/(Prescaler)/divider) * count(Max 4294967295) = Timer clock (Frequency)
			fTimerclk = (1/(float)((float)uOpClk/((float)sPrescaler)/(1<<(sDivider))))*sTCNTB*1000;
			fTimerfreq = 1/fTimerclk;
			printf("Timer = %d\n",sTimer);
			printf("OpCLK = %d , sPrescaler = %d, sDivider = %d dd= %d\n",uOpClk,sPrescaler,sDivider,(1<<(sDivider)));
			printf("Timer Clock = %f msec , Timer Frequency = %f Khz\n\n",fTimerclk,fTimerfreq);

			}
		


		printf("Do you want to change other timers?\n");
		printf("[0.no	1.yes]:");
		sContinue = GetIntNum();
		if (sContinue == 0)
			break;
		else
			printf("\n");

		
}

					
}


//////////
// Function Name : PWM_Select
// Function Description : This function set up Timers by function inputs
// Input :	uTimer [0~4]
//			uPrescaler [1~256]
//			uDivider [0:1/1	1:1/2	2:1/4	3:1/8	4:1/16	5:extCLK]
//			uTCNTB [1~2^31]
//			uTCMPB [1~2^31]
//			uEnDz, uEnDMA, uAutoreload, uEnInverter, uEnInt [0:Disable	1:Enbale]
//			uDzlen [0~255]
// Output : NONE
// Version : v0.1

void PWM_Select(u32 uTimer,u32 uPrescaler,u32 uDivider,u32 uTCNTB,u32 uTCMPB,u32 uEnDz,u32 uDzlen,u32 uEnDMA,u32 uAutoreload,u32 uEnInverter,u32 uEnInt)
{

	u32	uTemp0;
	u32	uTemp1;
	u32	uTemp2;
	u32  uTemp3;
	

		if(uEnDMA == 1)
			{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜私人影院久久久久| 91色porny在线视频| 91精品国产一区二区人妖| 日韩欧美精品在线视频| 亚洲成a人片在线不卡一二三区| 成人国产精品免费网站| 日韩视频中午一区| 日韩和的一区二区| 在线观看91精品国产麻豆| 亚洲国产sm捆绑调教视频| 日本精品视频一区二区三区| 亚洲欧美日本韩国| 一道本成人在线| 一区二区三区免费网站| 色天天综合久久久久综合片| 亚洲精品视频免费看| 欧美在线观看视频一区二区三区| 亚洲精品成人在线| 在线欧美一区二区| 亚洲一二三专区| 欧美精品三级在线观看| 日韩和的一区二区| 久久众筹精品私拍模特| 国产91精品精华液一区二区三区 | 久久久蜜臀国产一区二区| 国内一区二区在线| 久久久久久久综合日本| 成人高清视频在线| 日韩美女久久久| 欧美视频三区在线播放| 视频精品一区二区| 日韩精品最新网址| 国产精品自拍三区| 国产精品毛片久久久久久| 成年人网站91| 国产精品久久久久久户外露出 | 亚洲精品网站在线观看| 欧美日韩国产bt| 国产又黄又大久久| 精品久久一二三区| 色婷婷综合五月| 麻豆精品蜜桃视频网站| 国产精品私人自拍| 欧美日韩精品一区视频| 国内精品伊人久久久久影院对白| 国产欧美精品日韩区二区麻豆天美| 94-欧美-setu| 免费成人在线网站| 亚洲色图清纯唯美| 日韩欧美国产1| 一本色道亚洲精品aⅴ| 久久精品国产亚洲高清剧情介绍 | 国产乱子轮精品视频| 一区二区三区中文在线| 欧美大片免费久久精品三p | 久久久91精品国产一区二区精品| 成人黄色av电影| 日韩福利电影在线| 亚洲欧洲国产专区| 26uuu精品一区二区三区四区在线| 波波电影院一区二区三区| 蜜臀久久久久久久| 国产精品美女www爽爽爽| 91精品久久久久久久久99蜜臂| caoporm超碰国产精品| 免费观看久久久4p| 亚洲精品一二三四区| 国产三级一区二区| 一本久久综合亚洲鲁鲁五月天| 久久精品免费看| 亚洲天堂免费在线观看视频| 精品久久免费看| 韩国成人精品a∨在线观看| 亚洲日本va在线观看| 日韩一区二区免费高清| 成人精品国产一区二区4080| 精品一区二区三区在线播放| 亚洲123区在线观看| 国产精品久久久久一区| 久久久噜噜噜久久人人看| 6080国产精品一区二区| 在线观看免费一区| av电影一区二区| 国产一区二区不卡在线| 免费国产亚洲视频| 免费成人在线观看| 午夜精品福利一区二区三区蜜桃| 亚洲激情第一区| 亚洲欧美另类久久久精品| 中文字幕成人在线观看| 国产视频911| 久久色在线视频| 久久久久一区二区三区四区| 色成年激情久久综合| av电影在线观看完整版一区二区| 亚洲精品视频一区二区| 中文字幕日韩欧美一区二区三区| 日韩亚洲欧美综合| 日韩午夜av电影| 日韩欧美一卡二卡| 欧美大尺度电影在线| 日韩欧美色综合网站| 日韩一区二区三| 精品第一国产综合精品aⅴ| 精品人在线二区三区| 亚洲精品一区二区三区精华液| 2020国产精品| 欧美国产欧美综合| 国产精品素人一区二区| 亚洲欧洲国产日韩| 夜夜嗨av一区二区三区| 一级日本不卡的影视| 亚洲国产sm捆绑调教视频| 综合av第一页| 亚洲女同女同女同女同女同69| 亚洲精品日产精品乱码不卡| 亚洲一区免费视频| 日韩精品1区2区3区| 久久99精品国产麻豆婷婷洗澡| 国产一区二区剧情av在线| 成人三级伦理片| 91精品福利视频| 日韩欧美另类在线| 国产精品久久网站| 国产精品家庭影院| 婷婷夜色潮精品综合在线| 狠狠色丁香九九婷婷综合五月| 国产不卡视频在线观看| 日本福利一区二区| 日韩一区二区在线播放| 国产精品天干天干在线综合| 亚洲成人自拍偷拍| 国产一区欧美二区| 日本久久一区二区三区| 日韩欧美一级精品久久| 亚洲欧美在线另类| 青青草国产成人99久久| 国产成人综合自拍| 色婷婷精品大在线视频| 欧美伦理视频网站| 日韩一区二区影院| 亚洲视频免费在线观看| 人人超碰91尤物精品国产| jlzzjlzz国产精品久久| 日韩欧美中文字幕一区| 亚洲天堂2016| 国产中文一区二区三区| 欧美三级电影一区| 久久综合九色综合97_久久久| 一区二区三区四区在线播放| 国产麻豆视频一区| 99精品视频在线观看| 欧美不卡在线视频| 国产精品免费视频一区| 久久精品国产亚洲5555| 成人免费精品视频| 精品国产凹凸成av人网站| 一区二区三区四区精品在线视频| 国产精品一区免费在线观看| 欧美日韩欧美一区二区| 国产精品国产三级国产三级人妇| 免费不卡在线视频| 日本久久一区二区| 欧美国产精品劲爆| 奇米四色…亚洲| 在线免费观看不卡av| 日韩欧美的一区二区| 亚洲裸体xxx| 成人91在线观看| 国产精品色一区二区三区| 国产一区在线观看视频| 欧美电影免费观看高清完整版 | 亚洲成人动漫在线免费观看| 成人黄色小视频| 欧美国产日本视频| 国产激情视频一区二区在线观看| 国产suv一区二区三区88区| 精品在线免费观看| 欧美一二三区精品| 美女视频免费一区| 日韩精品一区二区三区swag | 日韩欧美一级在线播放| 韩国成人福利片在线播放| 26uuu成人网一区二区三区| 国产91清纯白嫩初高中在线观看| 国产午夜精品久久久久久免费视| 国产超碰在线一区| 国产精品三级av| 精品久久人人做人人爽| 国产精品中文有码| 国产免费久久精品| 色婷婷激情综合| 舔着乳尖日韩一区| 日韩一区二区免费电影| 国产在线精品免费av| 亚洲欧美日韩久久精品| 色综合中文字幕国产 | 欧美日韩五月天| 美女网站在线免费欧美精品| 欧美日韩日日夜夜|