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

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

?? irda.c

?? 2440開發板測試程序(含LCD、攝像頭演示等)
?? C
字號:
#include "def.h"
#include "2440addr.h"
#include "2440lib.h"

#define IrDA_BUFLEN 0x100

void IrDA_Port_Set(void);
void IrDA_Port_Return(void);

void __irq IrDA_TxInt(void);
void __irq IrDA_RxOrErr(void);

volatile U8 *IrDAdataPt;
volatile U8 *IrDAdataFl;
volatile U32 IrDA_cnt,IrDA_end,IrDA_err,IrDA_BAUD;
volatile U32 sirda_rGPBCON,sirda_rGPBDAT,sirda_rGPBUP;
volatile U32 sirda_rGPHCON,sirda_rGPHDAT,sirda_rGPHUP;
volatile U32 sirda_ULCON2,sirda_UCON2,sirda_UFCON2,sirda_UMCON2,sirda_UBRDIV2;

void IrDA_Port_Set(void)
{
    //Push UART GPIO port configuration
    sirda_rGPBCON=rGPBCON; 
    sirda_rGPBDAT=rGPBDAT;
    sirda_rGPBUP=rGPBUP;
    sirda_rGPHCON=rGPHCON; 
    sirda_rGPHDAT=rGPHDAT;
    sirda_rGPHUP=rGPHUP;
    //Configure IrDA port
    rGPBDAT|=(1<<1);	
    rGPBCON&=0x3ffff3;
    rGPBCON|=(1<<2);	// Output(nIrDATXDEN)
    rGPBUP|=(1<<1);	//Uart port pull-up disable
    rGPHCON&=0x3c0fff;
    rGPHCON|=0x2a000;	// TXD2,RXD2
    rGPHUP|=0x1c0;	//Uart port pull-up disable
    //Push Uart control registers 
    sirda_ULCON2=rULCON2;		
    sirda_UCON2 =rUCON2;		
    sirda_UFCON2=rUFCON2;		
    sirda_UMCON2=rUMCON2;
    sirda_UBRDIV2=rUBRDIV2;
}       
        
void IrDA_Port_Return(void)
{       
    //Pop UART GPIO port configuration
    rGPBCON=sirda_rGPBCON;
    rGPBDAT=sirda_rGPBDAT;
    rGPBUP =sirda_rGPBUP;
    rGPHCON=sirda_rGPHCON;
    rGPHDAT=sirda_rGPHDAT;
    rGPHUP =sirda_rGPHUP;
    //Pop Uart control registers 
    rULCON2=sirda_ULCON2;		
    rUCON2 =sirda_UCON2;	
    rUFCON2=sirda_UFCON2;		
    rUMCON2=sirda_UMCON2;
    rUBRDIV2=sirda_UBRDIV2;
}

void __irq IrDA_TxInt(void)
{
    rINTSUBMSK|=(BIT_SUB_RXD2|BIT_SUB_TXD2|BIT_SUB_ERR2);
    if(IrDA_cnt < (IrDA_BUFLEN))
    {
	Uart_Printf("%d,",*IrDAdataPt);
	WrUTXH2(*IrDAdataPt++);
	IrDA_cnt++;
	ClearPending(BIT_UART2);
        rSUBSRCPND=(BIT_SUB_TXD2);
        rINTSUBMSK&=~(BIT_SUB_TXD2);
    }
    else
    {
	IrDA_end=1;
	while(rUFSTAT2 & 0x2f0);	//Until FIFO is empty
	while(!(rUTRSTAT2 & 0x4));	//Until Tx shifter is empty
        ClearPending(BIT_UART2);
	rINTMSK|=BIT_UART2;
    }
}

void __irq IrDA_RxOrErr(void)
{
    DisableSubIrq(BIT_SUB_RXD2|BIT_SUB_TXD2|BIT_SUB_ERR2);	// Just for the safety
    if(rSUBSRCPND&BIT_SUB_RXD2) {
    	if(rUTRSTAT2&1)		//has data, non-fifo mode
			WrUTXH1(rURXH2);
    }
    else {
   	    switch(rUERSTAT2) {	//to clear and check the status of register bits
		case '1':
		    Uart_Printf("Overrun error\n");
	    	break;
		case '2':
		    Uart_Printf("Parity error\n");
	    	break;
		case '4':
		    Uart_Printf("Frame error\n");
	    	break;
		case '8':
		    Uart_Printf("Breake detect\n");
	    	break;
		default :
		    break;
    	}
    }
    ClearSubPending(BIT_SUB_RXD2|BIT_SUB_TXD2|BIT_SUB_ERR2);
    EnableSubIrq(BIT_SUB_RXD2|BIT_SUB_ERR2);
    ClearPending(BIT_UART2);
}

extern U32 PCLK;

void Test_IrDA_Tx(void)
{
	char dat;

	Uart_Printf("\nIrDA test\n");	// Select IrDA baud rate
	
	IrDA_cnt = 0;
	IrDA_end = 0;
	IrDA_Port_Set();
	
	IrDA_BAUD = 19200;
	Uart_Printf("Select baudrate = %d\n", IrDA_BAUD);
	
	rUBRDIV2 = ((int)(PCLK/16./IrDA_BAUD)-1);
	//Uart_Printf("rUBRDIV2 = %d\n", rUBRDIV2);
	rGPBDAT &= 0x7fd;	// Enable nIrDATXDEN    
	rUFCON2  = (1<<6)|(0<<4)|(1<<2)|(1<<1)|0;
	//Tx and Rx FIFO Trigger Level = 4byte,Tx and Rx FIFO Reset,FIFO disable
	rUCON2 = (0<<10)|(1<<9)|(1<<8)|(0<<7)|(1<<6)|(0<<5)|(0<<4)|(0<<2)|(0);
	//Use PCLK,Tx&RxLevel interrupt,Rx timeout disable,Rx err interrupt enable,Non-loopback,Tx&Rx disable
	rULCON2 = (1<<6)|(0<<3)|(0<<2)|(3);	//IrDA,No parity,One stop bit,8bits
	
	rUCON2 = (0<<10)|(1<<9)|(1<<8)|(0<<7)|(1<<6)|(0<<5)|(0<<4)|(1<<2)|(1);
	//Use PCLK,Tx&RxLevel interrupt,Rx timeout disable,Rx err interrupt enable,Non-loopback,Tx&Rx disable
	Uart_Printf("Now start UART IrDA Tx&Rx test, check data[a~z]\n");

	pISR_UART2 = (U32)IrDA_RxOrErr;
	EnableSubIrq(BIT_SUB_RXD2|BIT_SUB_ERR2);	
	EnableIrq(BIT_UART2);

	dat = 'a';
    while(1) {
		Delay(5);
		WrUTXH1(dat);
		Delay(5);
		WrUTXH2(dat);
		while(!(rUTRSTAT2&0x2));   //Wait until THR is empty.    	
		dat++;
		if(dat>'z')
			break;
	}
	
	DisableSubIrq(BIT_SUB_RXD2|BIT_SUB_TXD2|BIT_SUB_ERR2);
	EnableIrq(BIT_UART2);
//	rUFCON2 = (3<<6)|(2<<4)|(1<<2)|(1<<1)|(0);
	rGPBDAT |= (1<<1);	// Disable nIrDATXDEN
//	IrDA_Port_Return();
	Uart_Printf("\nEnd Tx&Rx\n");
}

void Test_IrDA_Rx(void)
{
    unsigned int i;
    
    IrDA_cnt=0;
    IrDA_end=0;
    IrDA_err=0;
    IrDA_Port_Set();    
    
	pISR_UART2 = (U32)IrDA_RxOrErr;
	Uart_Printf("\nSelect the baud rate\n");	// Select IrDA baud rate
	Uart_Printf("1)9600    2)19200    3)38400    4)57600    5)115200\n");
	i = Uart_Getch();
    switch(i) {
	case '1':
            IrDA_BAUD=9600;
        break;
	
	case '2':
            IrDA_BAUD=19200;
        break;
	
	case '3':
            IrDA_BAUD=38400;
        break;
	
	case '4':
            IrDA_BAUD=57600;
        break;
	
	case '5':
            IrDA_BAUD=115200;
        break;
	
	default:
	break;
    }
    rUBRDIV2=( (int)(PCLK/16./IrDA_BAUD) -1 );
    Uart_Printf("rUBRDIV2=%d\n", rUBRDIV2);
    Uart_Printf("[UART IrDA Rx Test]\n");
    Uart_Printf("This test should be configured two boards.\n");
    Uart_Printf("Press any key to start Rx and then Start Tx....\n");
    Uart_Getch();
    Uart_Printf("Now... Rx with IrDA\n");
    rUFCON2=(1<<6)|(0<<4)|(1<<2)|(1<<1)|(1);
    //Tx and Rx FIFO Trigger Level:4byte,Tx and Rx Reset,FIFO En
    rUCON2=(0<<10)|(1<<9)|(1<<8)|(0<<7)|(1<<6)|(0<<5)|(0<<4)|(0<<2)|(0); // From H/W
    rULCON2=(1<<6)|(0<<3)|(0<<2)|(3);	// IrDA,No parity,One stop bit, 8bit
    Delay(1); // From H/W
    rUCON2=(0<<10)|(1<<9)|(1<<8)|(0<<7)|(1<<6)|(0<<5)|(0<<4)|(0<<2)|(1);
    // PCLK,Tx&Rx:Level,Rx timeout:x,Rx error int:o,Loop-back:x,Send break:x,Tx:x,Rx:int
    rINTMSK=~(BIT_UART2);
    rINTSUBMSK=~(BIT_SUB_RXD2|BIT_SUB_ERR2);

    while(!IrDA_end);
    
    rINTSUBMSK|=(BIT_SUB_RXD2|BIT_SUB_TXD2|BIT_SUB_ERR2);
    rUFCON2=(3<<6)|(2<<4)|(1<<2)|(1<<1)|(0);
    Uart_Printf("\nEnd Rx, receive data count=%d\n",IrDA_cnt);
    for(i=0;i<IrDA_BUFLEN;i++)
    {
	if(i-(*IrDAdataFl++))
	{
	    Uart_Printf("i=%d,",i);
	    IrDA_err++;
	}
    }
    if(IrDA_err)
    	Uart_Printf("IrDA test fail!! Error count=%d\n",IrDA_err);
    else
    	Uart_Printf("IrDA test is good!!\n");
    IrDA_Port_Return();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美成va人片在线观看| 色婷婷av一区| 男女性色大片免费观看一区二区| 国产精品久久久久国产精品日日| 国产午夜亚洲精品羞羞网站| 久久影院电视剧免费观看| 日韩精品中午字幕| 欧美草草影院在线视频| 久久久久99精品国产片| 久久久99精品免费观看| 337p粉嫩大胆噜噜噜噜噜91av | 亚洲va在线va天堂| 亚洲国产欧美日韩另类综合| 亚洲成av人片| 久久国内精品自在自线400部| 秋霞午夜鲁丝一区二区老狼| 粉嫩一区二区三区性色av| 国产iv一区二区三区| 99re热这里只有精品免费视频| 91同城在线观看| 欧美日韩一区小说| 日韩一区二区免费在线电影 | 精品不卡在线视频| 久久精品亚洲一区二区三区浴池| 中文一区二区完整视频在线观看| 亚洲视频免费在线观看| 五月综合激情网| 国产激情偷乱视频一区二区三区| 成人高清视频免费观看| 欧美三级一区二区| 久久久久亚洲综合| 亚洲老妇xxxxxx| 久久精品久久久精品美女| 成人中文字幕电影| 欧美久久久久久久久| 久久婷婷国产综合国色天香 | 777色狠狠一区二区三区| 欧美mv日韩mv国产网站app| 国产精品福利影院| 日韩国产精品久久久久久亚洲| 国产精品亚洲а∨天堂免在线| 91九色02白丝porn| 亚洲色图20p| 国产在线精品免费| 欧美日韩国产区一| 中文字幕亚洲一区二区av在线| 日韩影院在线观看| 91女神在线视频| 久久亚洲影视婷婷| 日韩影院免费视频| 在线观看一区日韩| 欧美高清在线精品一区| 久久精品国产99| 色88888久久久久久影院按摩| 久久综合网色—综合色88| 亚洲伊人色欲综合网| www.爱久久.com| 亚洲精品一区二区三区99| 日韩国产精品91| 欧美日韩在线综合| 亚洲黄色片在线观看| av激情综合网| 国产精品无遮挡| 国产老女人精品毛片久久| 欧美一区二区女人| 亚洲国产精品嫩草影院| 99精品视频在线播放观看| 国产偷v国产偷v亚洲高清| 久久99精品一区二区三区| 欧美一区午夜视频在线观看| 一区二区免费看| 欧美影视一区在线| 亚洲免费观看视频| 91国产免费观看| 一二三四社区欧美黄| 在线免费观看不卡av| 亚洲男人的天堂av| 91国在线观看| 亚洲成人福利片| 91精品福利在线一区二区三区| 天天综合网天天综合色| 69堂精品视频| 麻豆免费精品视频| 欧美一二三四区在线| 久久99热99| 国产精品三级视频| 一本大道久久a久久综合婷婷| 亚洲男同性恋视频| 欧美色图免费看| 丁香亚洲综合激情啪啪综合| 欧美激情中文不卡| 91一区一区三区| 亚洲国产综合色| 日韩三级.com| 福利视频网站一区二区三区| 中文字幕日韩av资源站| 欧美老人xxxx18| 国产真实乱子伦精品视频| 国产精品色在线观看| 色天使色偷偷av一区二区| 午夜精品在线视频一区| 久久综合久久综合亚洲| 成人午夜电影小说| 亚洲综合视频在线观看| 日韩一级黄色片| www.成人网.com| 日韩高清不卡一区二区三区| 国产亚洲精久久久久久| 在线视频综合导航| 久久国产精品99久久久久久老狼| 亚洲欧洲国产日韩| 欧美一级高清片在线观看| 99视频精品全部免费在线| 爽爽淫人综合网网站| 午夜视频在线观看一区| 国产香蕉久久精品综合网| 欧美天堂一区二区三区| 国产乱子伦视频一区二区三区| 亚洲综合偷拍欧美一区色| 国产亚洲综合性久久久影院| 欧美色图天堂网| 成人av手机在线观看| 奇米影视7777精品一区二区| 最新国产成人在线观看| 精品国产精品一区二区夜夜嗨| 色哟哟一区二区在线观看| 国产一二三精品| 奇米四色…亚洲| 亚洲综合色噜噜狠狠| 国产精品网站在线播放| 正在播放亚洲一区| 色www精品视频在线观看| 丁香激情综合五月| 久久成人久久爱| 三级成人在线视频| 亚洲午夜免费视频| 亚洲人一二三区| 国产精品乱人伦| 中文字幕第一页久久| 亚洲精品在线观看网站| 在线播放中文字幕一区| 91豆麻精品91久久久久久| eeuss国产一区二区三区| 国产成人免费xxxxxxxx| 国模大尺度一区二区三区| 九九精品一区二区| 美女精品自拍一二三四| 日日夜夜精品视频免费| 午夜不卡在线视频| 日韩精品欧美精品| 午夜亚洲国产au精品一区二区| 亚洲自拍偷拍图区| 一区二区三区在线观看国产| 亚洲色图清纯唯美| 亚洲欧美一区二区三区孕妇| 亚洲日穴在线视频| 久久精品国产77777蜜臀| 婷婷开心激情综合| 另类人妖一区二区av| 久久精品国产澳门| 国产精品自拍三区| 波多野结衣一区二区三区 | 欧美日韩三级一区| 欧美日韩国产高清一区二区三区 | 精品一区精品二区高清| 精品一区二区影视| 国产成人啪免费观看软件| 国产成人免费视频网站 | 亚洲一区二区三区美女| 亚洲欧洲一区二区三区| 欧美激情综合网| 亚洲精品日产精品乱码不卡| 亚洲国产欧美日韩另类综合| 男女性色大片免费观看一区二区 | 欧美理论在线播放| 欧美α欧美αv大片| 日本一区二区久久| 夜夜夜精品看看| 免费观看30秒视频久久| 国产精品自拍毛片| 欧美在线不卡一区| 欧美va在线播放| 国产精品欧美一区喷水| 亚洲第一福利一区| 国产自产2019最新不卡| 91在线你懂得| 日韩亚洲电影在线| 国产精品国产三级国产aⅴ中文| 亚洲高清免费观看高清完整版在线观看 | 精品少妇一区二区三区免费观看| 国产亚洲精品久| 婷婷六月综合亚洲| 99re这里只有精品视频首页| 宅男在线国产精品| 亚洲欧洲日产国码二区| 麻豆一区二区99久久久久| 一本一道综合狠狠老| 精品国产三级a在线观看| 亚洲人精品一区| 久久成人久久爱|