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

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

?? timer.c

?? 基于NXP2200平臺的OS移植模板
?? C
字號:
/** @file	Timer.c
* @brief	LPC2200 Timer n驅動程序
* @Notice	采用中斷方式, 如有問題請聯系作者
* @Author	Mars.zhu@hotmail.com 2007-7-6 17:03
* @Modify
*/
#include "option.h"
#include "Timer.h"

#define	PR		99
#define	PWM_PR	0

/** @func TnMR_Init()
* @brief 定時器n初始化
* @param	Tn		 定時器選擇
*			ms		 定時時間
* @Retval	void
*/
void
TnMR_Init(uint8 Tn, uint16 ms, unsigned ISR)
{
	uint32	mr;

	/** 匹配寄存器*/
	mr = Fpclk / (PR+1) / 1000 * ms;

	switch (Tn) {
	case 0:
		T0PR	= PR;
		T0MCR	= 0x03;
		T0MR0	= mr;
		T0TCR	= 0x03;
		T0TCR	= 0x01;
		SetISR(TIMER0_NO, TIMER0_Slot, ISR);
		break;
	case 1:
		T1PR	= PR;
		T1MCR	= 0x03;
		T1MR0	= mr;
		T1TCR	= 0x03;
		T1TCR	= 0x01;
		SetISR(TIMER1_NO, TIMER1_Slot, ISR);
		break;
	default:
		break;
	}
}

/** @func TnCAP_Init()
* @brief 定時器n捕獲模式初始化
* @param	Tn			定時器選擇
*			CAP_MODE	捕獲方式,按位操作方式
*				bit0:1--CAP上跳沿捕獲
*				bit1:1--CAP下降沿捕獲
*			CAPn		捕獲通道選擇,0~3
* @Retval	void
*/
void
TnCAP_Init(uint8 Tn, uint8 CAP_MODE, uint8 CAPn, unsigned ISR)
{
	switch (Tn) {
	case 0:
		/** Set TnCAP0 Pin*/
		switch (CAPn) {
		case 0:
			PINSEL0 = (PINSEL0&P002_CLR_BITS) | P002_FOR_CAP0_0;
			break;
		case 1:
			PINSEL0 = (PINSEL0&P004_CLR_BITS) | P004_FOR_CAP0_1;
			break;
		case 2:
			PINSEL0 = (PINSEL0&P006_CLR_BITS) | P006_FOR_CAP0_2;
			break;
		case 3:
			PINSEL1 = (PINSEL1&P029_CLR_BITS) | P029_FOR_CAP0_3;
			break;
		default:
			break;
		}

		/** Clear Int flag*/
		T0IR	= T0IR | (1<<(CAPn+4));

		/** 設置捕獲控制寄存器*/
		T0CCR	= (T0CCR & (~(3<<(CAPn*3)))) | (CAP_MODE<<(CAPn*3)) | (1<<(CAPn*3+2));
		SetISR(TIMER0_NO, TIMER0_Slot, ISR);
		T0TCR	= 0x03;
		T0TCR	= 0x01;
		break;
	case 1:
		/** Set TnCAP0 Pin*/
		switch (CAPn) {
		case 0:
			PINSEL0 = (PINSEL0&P010_CLR_BITS) | P010_FOR_CAP1_0;
			break;
		case 1:
			PINSEL0 = (PINSEL0&P011_CLR_BITS) | P011_FOR_CAP1_1;
			break;
		case 2:
			PINSEL1 = (PINSEL1&P017_CLR_BITS) | P017_FOR_CAP1_2;
			break;
		case 3:
			PINSEL1 = (PINSEL1&P018_CLR_BITS) | P018_FOR_CAP1_3;
			break;
		default:
			break;
		}

		/** Clear Int flag*/
		T1IR	= T1IR | (1<<(CAPn+4));

		/** 設置捕獲控制寄存器*/
		T1CCR	= (T1CCR & (~(3<<(CAPn*3)))) | (CAP_MODE<<(CAPn*3)) | (1<<(CAPn*3+2));
		SetISR(TIMER1_NO, TIMER1_Slot, ISR);
		T1TCR	= 0x03;
		T1TCR	= 0x01;
		break;
	default:
		break;
	}
}


/** @func TnMAT_Init()
* @brief 定時器n匹配模式初始化
* @param	Tn			定時器選擇
*			time		匹配時間,該值會直接寫入到匹配寄存器中
*			T_MODE		匹配控制模式
*				0: 匹配時,定時器復位
*				1: 匹配時,定時器停止
*			EXT_MODE	匹配時,外部輸出控制
*				0: 不執行任何動作
*				1: 外部匹配輸出0
*				2: 外部匹配輸出1
*				3: 外部匹配輸出翻轉
*			MATn		匹配通道選擇,0~3
* @Retval	void
*/
void
TnMAT_Init(uint8 Tn, uint32 time, uint8 T_MODE, uint8 EXT_MODE, uint8 MATn, unsigned ISR)
{
	switch (Tn) {
	case 0:
		if (EXT_MODE) {
			switch (MATn) {
			case 0:
				PINSEL0 = (PINSEL0&P003_CLR_BITS) | P003_FOR_MAT0_0;
				break;
			case 1:
				PINSEL0 = (PINSEL0&P005_CLR_BITS) | P005_FOR_MAT0_1;
				break;
			case 2:
				PINSEL1 = (PINSEL1&P016_CLR_BITS) | P016_FOR_MAT0_2;
				break;
			case 3:
				PINSEL1 = (PINSEL1&P029_CLR_BITS) | P029_FOR_MAT0_3;
				break;
			default:
				break;
			}
		}
		T0IR = T0IR | (1<<MATn);
		T0PR = PR;

		/** 匹配寄存器*/
		*(uint32*)((&T0MR0)+MATn) = time;
		/** 匹配控制寄存器*/
		T0MCR = (T0MCR & (~(7<<(MATn*3)))) | (1<<(MATn*3+1+T_MODE)) | (1<<(MATn*3));
		/** 外部匹配寄存器*/
		T0EMR = (T0EMR & (~(3<<(MATn*2+4)))) | (EXT_MODE<<(MATn*2+4));
		SetISR(TIMER0_NO, TIMER0_Slot, ISR);
		T0TCR = 0x03;
		T0TCR = 0x01;
		break;
	case 1:
		if (EXT_MODE) {
			switch (MATn) {
			case 0:
				PINSEL0 = (PINSEL0&P012_CLR_BITS) | P012_FOR_MAT1_0;
				break;
			case 1:
				PINSEL0 = (PINSEL0&P013_CLR_BITS) | P013_FOR_MAT1_1;
				break;
			case 2:
				PINSEL1 = (PINSEL1&P019_CLR_BITS) | P019_FOR_MAT1_2;
				break;
			case 3:
				PINSEL1 = (PINSEL1&P020_CLR_BITS) | P020_FOR_MAT1_3;
				break;
			default:
				break;
			}
		}
		T1IR = T1IR | (1<<MATn);
		T1PR = PR;

		/** 匹配寄存器*/
		*(uint32*)((&T1MR0)+MATn) = time;
		/** 匹配控制寄存器*/
		T1MCR = (T1MCR & (~(7<<(MATn*3)))) | (1<<(MATn*3+1+T_MODE)) | (1<<(MATn*3));
		/** 外部匹配寄存器*/
		T1EMR = (T1EMR & (~(3<<(MATn*2+4)))) | (EXT_MODE<<(MATn*2+4));
		SetISR(TIMER1_NO, TIMER1_Slot, ISR);
		T1TCR = 0x03;
		T1TCR = 0x01;
		break;
	default:
		break;
	}
}

/** @func TnCNT_Init()
* @brief 計數器n初始化
* @param	Tn		定時器選擇
*			MODE	計數器模式選擇
*				0: CAPn的上升沿計數
*				1: CAPn的下降沿計數
*				2: CAPn上升沿和下降沿都計數
*			CAPn	計數器輸入端0~3
* @Retval	void
*/
void
TnCNT_Init(uint8 Tn, uint8 MODE, uint8 CAPn)
{
	switch (Tn) {
	case 0:
		switch (CAPn) {
		case 0:
			PINSEL0 = (PINSEL0&P002_CLR_BITS) | P002_FOR_CAP0_0;
			break;
		case 1:
			PINSEL0 = (PINSEL0&P004_CLR_BITS) | P004_FOR_CAP0_1;
			break;
		case 2:
			PINSEL0 = (PINSEL0&P006_CLR_BITS) | P006_FOR_CAP0_2;
			break;
		case 3:
			PINSEL1 = (PINSEL1&P029_CLR_BITS) | P029_FOR_CAP0_3;
			break;
		default:
			break;
		}
//		T0CTCR	= (CAPn<<2) | (MODE+1);
		T0TCR	= 0x03;
		T0TCR	= 0x01;
		break;
	case 1:
		switch (CAPn) {
		case 0:
			PINSEL0 = (PINSEL0&P010_CLR_BITS) | P010_FOR_CAP1_0;
			break;
		case 1:
			PINSEL0 = (PINSEL0&P011_CLR_BITS) | P011_FOR_CAP1_1;
			break;
		case 2:
			PINSEL1 = (PINSEL1&P017_CLR_BITS) | P017_FOR_CAP1_2;
			break;
		case 3:
			PINSEL1 = (PINSEL1&P018_CLR_BITS) | P018_FOR_CAP1_3;
			break;
		default:
			break;
		}
//		T1CTCR	= (CAPn<<2) | (MODE+1);
		T1TCR	= 0x03;
		T1TCR	= 0x01;
		break;
	default:
		break;
	}
}

/** @func	TnPWM_Init()
* @brief	PWMn初始化, 單邊沿控制模式
* @param	ch			PWM 通道號
*			Cyc			PWM 周期(us)
*			Mode		PWM 輸出模式 1 單邊沿 2 雙邊沿
*			H_time		PWM 高電平時間
*			L_time		PWM 低電平時間(Mode=1無效)
* @Retval	void
*/
void
TnPWM_Init(uint8 ch, uint32 Cyc, uint32 H_time)
{
	uint32	mr_cyc, mr_duty;

	/** 計算匹配值*/
	mr_cyc   = Fpclk / (PWM_PR+1) / 1000 * Cyc;
	mr_cyc  /= 1000;
	mr_duty  = Fpclk / (PWM_PR+1) / 1000 * H_time;
	mr_duty /= 1000;

	PWMPR	= PWM_PR;
	PWMMCR	= PWM_RESET;				// MR0
	PWMMR0	= mr_cyc;					// cycle
	/** Set PWM Pin*/
	switch (ch) {
	case 1:
		PINSEL0 = (PINSEL0&P000_CLR_BITS) | P000_FOR_PWM1;
		PWMMR1	= mr_duty;
		break;
	case 2:
		PINSEL0 = (PINSEL0&P007_CLR_BITS) | P007_FOR_PWM2;
		PWMMR2	= mr_duty;
		break;
	case 3:
		PINSEL0 = (PINSEL0&P001_CLR_BITS) | P001_FOR_PWM3;
		PWMMR3	= mr_duty;
		break;
	case 4:
		PINSEL0 = (PINSEL0&P008_CLR_BITS) | P008_FOR_PWM4;
		PWMMR4	= mr_duty;
		break;
	case 5:
		PINSEL1 = (PINSEL1&P021_CLR_BITS) | P021_FOR_PWM5;
		PWMMR5	= mr_duty;
		break;
	case 6:
		PINSEL0 = (PINSEL0&P009_CLR_BITS) | P009_FOR_PWM6;
		PWMMR6	= mr_duty;
		break;
	default:
		return;
	}
	PWMLER	= (1 << 0) | (1 << ch);		// 鎖存
	PWMPCR	= 1 << (ch + 8);			// 使能對應PWM通道輸出
	PWMTCR	= 0x09;						// 啟動定時器, PWM使能
}

/** @func	TnPWM_Flush()
* @brief	重設PWM信號占空比
* @param	ch			PWM 通道號
*			time		PWM 高電平時間
* @Retval	void
*/
void
TnPWM_Flush(uint8 ch, uint32 time)
{
	uint32	mr;

	mr  = Fpclk / (PWM_PR+1) / 1000 * time;
	mr /= 1000;

	switch (ch) {
	case 1:
		PWMMR1	= mr;
		break;
	case 2:
		PWMMR2	= mr;
		break;
	case 3:
		PWMMR3	= mr;
		break;
	case 4:
		PWMMR4	= mr;
		break;
	case 5:
		PWMMR5	= mr;
		break;
	case 6:
		PWMMR6	= mr;
		break;
	default:
		return;
	}
	PWMLER	= 1 << ch;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲亚洲精品在线观看| 日韩精品中文字幕在线一区| 欧美精品黑人性xxxx| 中文字幕高清一区| 亚洲最新视频在线播放| 风间由美一区二区三区在线观看 | 亚洲私人影院在线观看| 欧美bbbbb| 精品三级av在线| 青草av.久久免费一区| 91精品在线免费| 男女性色大片免费观看一区二区| 欧美三级资源在线| 亚洲电影中文字幕在线观看| 欧美性猛交xxxxxx富婆| 午夜视频在线观看一区二区 | 久久精品亚洲麻豆av一区二区| 日韩视频免费观看高清在线视频| 国产精品久久久久影院色老大| 午夜av一区二区| 99精品视频一区二区| 91精品国产黑色紧身裤美女| 一区二区三区四区视频精品免费 | 亚洲视频狠狠干| 国产一区二区日韩精品| 欧美伦理视频网站| 一区二区不卡在线播放 | 欧美激情综合网| 精品制服美女久久| 亚洲精品一区二区三区影院| 午夜精品福利在线| 精品少妇一区二区三区在线播放| 亚洲一区二区影院| 欧美电影一区二区三区| 丝袜国产日韩另类美女| 制服视频三区第一页精品| 五月婷婷另类国产| 日韩情涩欧美日韩视频| 国产麻豆日韩欧美久久| 亚洲国产激情av| 一本色道久久综合亚洲91| 亚洲一级在线观看| 国产精品第五页| 欧美在线不卡视频| 懂色av中文一区二区三区| 一区二区三区四区精品在线视频| 欧美激情艳妇裸体舞| 久久综合资源网| 国产精品一区二区久激情瑜伽| 一区二区在线观看不卡| 在线电影国产精品| 欧美精品丝袜久久久中文字幕| 91麻豆产精品久久久久久| 国产成人精品免费一区二区| 国产精品一区二区男女羞羞无遮挡| 香蕉久久一区二区不卡无毒影院| 亚洲欧美一区二区三区国产精品| 国产精品视频观看| 亚洲精品国久久99热| 夜夜嗨av一区二区三区网页 | 精品电影一区二区| 国产精品天天看| 成人免费在线播放视频| 国产亚洲一区字幕| 亚洲线精品一区二区三区| 麻豆国产91在线播放| 精品国产乱码久久久久久图片| 麻豆精品视频在线观看视频| 亚洲欧美日韩成人高清在线一区| 欧美人妖巨大在线| 在线视频国产一区| av电影在线观看不卡| 狠狠色丁香久久婷婷综合_中| 一区二区三区精密机械公司| 精品久久人人做人人爽| 欧美成人精精品一区二区频| 精品视频一区二区三区免费| 在线观看不卡一区| 欧美日韩国产在线播放网站| 精品视频免费在线| 欧美日韩免费一区二区三区 | 国产成人午夜片在线观看高清观看| 免费欧美高清视频| 精品亚洲免费视频| 国产福利一区在线| 91年精品国产| 欧美日韩国产影片| 制服丝袜激情欧洲亚洲| 91精品国产综合久久精品性色| 欧美精品一区二区不卡| 国产欧美日本一区视频| 国产精品毛片a∨一区二区三区| 久久久.com| 日韩精品成人一区二区在线| 精品在线播放免费| 日本久久一区二区三区| 日韩一区二区电影| 日韩美女啊v在线免费观看| 偷拍与自拍一区| 国产成人亚洲精品狼色在线| 欧美日韩一区二区三区在线看| 欧美一区二区成人6969| 国产精品国产三级国产普通话99| 亚洲高清三级视频| 99久久精品国产毛片| 精品国产免费久久| 日韩成人午夜电影| 欧美日韩精品一区二区三区| 久久综合色8888| 国产不卡高清在线观看视频| 日韩欧美国产一区二区三区| 图片区小说区国产精品视频| 成人午夜精品一区二区三区| 久久一夜天堂av一区二区三区| 亚洲v日本v欧美v久久精品| 91成人在线免费观看| 一区二区免费在线| 色狠狠桃花综合| 亚洲成人动漫一区| 欧美日韩国产一级| 日韩黄色片在线观看| 精品美女一区二区三区| 国产精品99久久久久久似苏梦涵 | 日韩av一区二区三区| 3d动漫精品啪啪1区2区免费| 日韩av电影天堂| 26uuu亚洲| 91豆麻精品91久久久久久| 亚洲成人一区二区在线观看| 欧美第一区第二区| 在线精品观看国产| 久久99精品久久只有精品| 一色桃子久久精品亚洲| 精品视频在线免费看| 国产精品原创巨作av| 亚洲影视在线播放| 一区二区成人在线视频| 久久综合国产精品| 在线亚洲高清视频| 成人免费福利片| 蜜桃精品在线观看| 丝袜美腿亚洲一区| 亚洲另类在线视频| 亚洲国产精品成人综合色在线婷婷| 欧洲亚洲精品在线| 91猫先生在线| 91理论电影在线观看| 国产白丝精品91爽爽久久| 蜜臀av性久久久久蜜臀aⅴ流畅| 亚洲区小说区图片区qvod| 精品国产精品一区二区夜夜嗨| 欧美日韩一区久久| 欧美日韩在线直播| 3d成人h动漫网站入口| 欧美亚洲国产bt| 欧美日韩极品在线观看一区| 日本韩国欧美三级| 欧美男女性生活在线直播观看| 色偷偷成人一区二区三区91| 91福利国产精品| 欧美日韩国产一级片| 精品欧美一区二区在线观看| 精品欧美一区二区在线观看| 久久人人爽爽爽人久久久| 国产午夜精品一区二区三区视频| 久久男人中文字幕资源站| 亚洲国产精品一区二区久久恐怖片 | 亚洲综合丁香婷婷六月香| 午夜av区久久| 国产成人啪免费观看软件| av一区二区久久| 在线成人av网站| 国产精品久久精品日日| 午夜激情久久久| 粉嫩aⅴ一区二区三区四区五区 | 91视频一区二区| 日韩免费视频一区| 亚洲国产综合在线| 国产一区二区三区不卡在线观看| 97国产一区二区| 久久久久久久电影| 午夜精品视频一区| 97精品国产97久久久久久久久久久久| 欧美二区三区91| 亚洲va欧美va人人爽| 99re成人精品视频| 一区精品在线播放| 成人激情午夜影院| 国产精品久久网站| 99久久精品国产网站| 中日韩免费视频中文字幕| 精品一区二区三区免费毛片爱 | 一区二区三区精密机械公司| 成人av在线网| 一区二区三区 在线观看视频| a级高清视频欧美日韩| 《视频一区视频二区| 91丨porny丨中文| 亚洲国产美国国产综合一区二区| 欧美丝袜丝nylons|