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

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

?? serial.c

?? NXP ARM7串口通訊程序
?? C
字號(hào):
/*
*******************************************************************************
*                     (c) Copyright 2008 
*                             All Rights Reserved
*
*                                   Version V1.00
*
* Product Number: 
* Compiler Tool : 
* MCU		: 
* File 		: Serial.c
* By   		: Tom.Yin
* Date 		: 
*******************************************************************************
*/


/*
*******************************************************************************
* 			     INCLUDE FILE
*******************************************************************************
*/
#include "Include.h"


/*
*******************************************************************************
*				      GLOBAL 
*******************************************************************************
*/
#define RBR_INTERRUPT_EN			0X01
#define THRE_INTERRUPT_EN			0X02
#define RX_STATUS_INTERRUPT_EN		0X04

#define IIR_UART_PENDING_FLG		BIN(00000001)
#define IIR_MASK					BIN(00001110)
#define IIR_RLS_FLG					BIN(00000110)	//RX Line status
#define IIR_RDA_FLG					BIN(00000100)	//RXD
#define IIR_CTI_FLG					BIN(00001100)	//Character time out indicator
#define IIR_THRE_FLG				BIN(00000010)	//transmit holding register empty

unsigned char RXD_Buffer[UART0_BUFFER_LENGTH];
unsigned char TXD_Buffer[UART0_BUFFER_LENGTH];

unsigned char In_Transmit_Flg;
unsigned int  Transmit_Length;
unsigned int  Transmit_Index;

unsigned int  Receive_Length;
unsigned int  Receive_Index;
unsigned char Received_Head_Flg;
unsigned int  Receive_Event;

//	Desible_Interrupt(UART_0_FLG);
//	Tick_Timer(Receive_Time_Out_Interval);
//	Enable_Interrupt(UART_0_FLG);
	
/*
*******************************************************************************
* 		             LOCAL DEFINE
*******************************************************************************
*/
void Uart0_ISR (void) __irq;

/*
*******************************************************************************
* 		             LOCAL PARAMETER
*******************************************************************************
*/


/*
*******************************************************************************
* 		            FUNCTION DECLARE
*******************************************************************************
*/
void UART0_IO_Config(void)
{
	PINSEL0 |= 0x0000005;                  		/* Enable RxD1 and TxD1   	 */          
}


/*
*******************************************************************************
*                             Init_Uart0
* Description: Setup the UART0, 8 bits, no Parity, 1 Stop bit,
*
* Arguments  : baudrate---------------------------target baudrate
*
* Returns    : None
* 
* Programers : Tom.Yin
*
* Date	     : 
*
*******************************************************************************
*/
void Init_Uart0 (unsigned int baudrate)  				/* Initialize Serial Interface   */
{   
	unsigned int i;

	for (i = 0; i < UART0_BUFFER_LENGTH; i++)
	{
		RXD_Buffer[i]	= 0;
		TXD_Buffer[i]	= 0;
	}
	
	In_Transmit_Flg		= false;
	Transmit_Length		= 0;
	Transmit_Index		= 0;
	
	Receive_Length		= 0;
	Receive_Index		= 0;
	Received_Head_Flg	= 0;
	Receive_Event		= RECEIVE_NORMAL;
	
	UART0_IO_Config();
	
	U0LCR				= 0x83;                          	/* 8 bits, no Parity, 1 Stop bit */
	//U0DLM				= ((FPCLK / 16) / baudrate) / 256;	/* Set Baudrate   				 */
	//U0DLL				= ((FPCLK / 16) / baudrate) % 256;
	
	U0DLM				= FPCLK / (16 * 256 * baudrate);	/* Set Baudrate   				 */
	U0DLL				=(FPCLK / (16 * baudrate)) % 256;
	
	
	U0LCR				= 0x03;                          	/* DLAB = 0                      */	
	
  	VICVectAddr1		= (unsigned long)Uart0_ISR;          //set uart0 interrupt  		
  	VICVectCntl1		= INTERRUPT_CTRL_ENABLE | UART_0_FLG;   
	Enable_Interrupt(UART_0_FLG);
	
	U0IER				= RBR_INTERRUPT_EN | THRE_INTERRUPT_EN;	
}

/*
*******************************************************************************
*                             Clear_Receive_Event
* Description: Clear Reseive Event 
*
* Arguments  : None
*				
* Returns    : None
* 
* Programers : Tom.Yin
*
* Date	     : 
*
*******************************************************************************
*/
void Clear_Receive_Event(void)
{
	Desible_Interrupt(UART_0_FLG);
	Receive_Event		= RECEIVE_NORMAL;
	Received_Head_Flg	= false;
	Enable_Interrupt(UART_0_FLG);
}

/*
*******************************************************************************
*                             Get_Receive_Event
* Description: Get Current Receive Event
*
* Arguments  : None
*				
* Returns    : Receive Event status
* 
* Programers : Tom.Yin
*
* Date	     : 
*
*******************************************************************************
*/
unsigned int Get_Receive_Event(void)
{
	return 	  Receive_Event;
}

/*
*******************************************************************************
*                             Is_Transmitting
* Description: Get Transmit status
*
* Arguments  : None
*				
* Returns    : Transmit flag, true---Transmitting, false-----transmit finished
* 
* Programers : Tom.Yin
*
* Date	     : 
*
*******************************************************************************
*/
unsigned int Is_Transmitting(void)
{
	return In_Transmit_Flg;
}

/*
*******************************************************************************
*                             Send_Msg
* Description: set Send message to transmit buffer and start transmit msg
*
* Arguments  : *buf---------------------------transmit message
*				len---------------------------message length
*
* Returns    : None
* 
* Programers : Tom.Yin
*
* Date	     : 
*
*******************************************************************************
*/
void Send_Msg(unsigned char *buf, unsigned int len)
{
	unsigned int i;
	
	if (len <= 0)
	{
		return;
	}
	
	if (!In_Transmit_Flg)
	{
		for (i = 0; i < len; i++)
		{
			TXD_Buffer[i]	= *buf;
			buf++;
		}
		
		Transmit_Index	= 0;
		Transmit_Length	= len;
		In_Transmit_Flg	= true;
		U0THR			= TXD_Buffer[Transmit_Index];
	}
}
              
/*
*******************************************************************************
*                             TXD_Process
* Description: Transmit process
*
* Arguments  : None
*
* Returns    : None
* 
* Programers : Tom.Yin
*
* Date	     : 
*
*******************************************************************************
*/
void TXD_ISR_Process(void)
{
	if (In_Transmit_Flg)
	{
		if (Transmit_Length == Transmit_Index)
		{
			In_Transmit_Flg	= false;
			Transmit_Index	= 0;
		}
		else
		{
			if (Transmit_Index < UART0_BUFFER_LENGTH)
			{
				Transmit_Index ++;
				U0THR	= TXD_Buffer[Transmit_Index];
			}
			else
			{
				In_Transmit_Flg	= false;
				Transmit_Index	= 0;
				//error process
			}
		}
	}
}


/*
*******************************************************************************
*                             RXD_Process
* Description: Receive process
*
* Arguments  : None
*
* Returns    : None
* 
* Programers : Tom.Yin
*
* Date	     : 
*
*******************************************************************************
*/
void RXD_ISR_Process(void)
{
	if (!Received_Head_Flg)
	{
		unsigned char r_temp;
		
		r_temp	= U0RBR;
		
		if (r_temp == FRAME_HEAD)
		{
			Received_Head_Flg	= true;
			Receive_Index		= 0;
			Receive_Length		= 0;
		}

		RXD_Buffer[Receive_Index] = r_temp;
		
		Receive_Index++;	
	}
	else
	{
		RXD_Buffer[Receive_Index] = U0RBR;
		
		Receive_Index++;
		
		if (Receive_Length == 0)
		{
			if (Receive_Index == LENGTH_FIELD_SIZE)
			{
				Receive_Length	= RXD_Buffer[1]<<24 | RXD_Buffer[2]<<16 | RXD_Buffer[3]<<8 | RXD_Buffer[4];
			}
		}
		else
		{
			if (Receive_Index >= (Receive_Length + LENGTH_FIELD_SIZE))
			{
				Receive_Event	= RECEIVE_A_FRAME;
			}
		}
	
		if (Receive_Index >= UART0_BUFFER_LENGTH)
		{
			Received_Head_Flg	= false;
			Receive_Index		= 0;
			Receive_Length		= 0;
			Receive_Event		= RECEIVE_NORMAL;
			//U0IER = U0IER & (~0x01);
			//error process
		}
	}
}

/*
*******************************************************************************
*                             Uart0_ISR
* Description: Uart0 Interrupt service program
*
* Arguments  : None
*
* Returns    : None
* 
* Programers : Tom.Yin
*
* Date	     : 
*
*******************************************************************************
*/
void Uart0_ISR (void) __irq
{
	unsigned char iir;
	
	while (((iir = U0IIR) & IIR_UART_PENDING_FLG) == 0)
	{
		switch (iir & IIR_MASK)
		{
			case IIR_RLS_FLG:
				//read U0LSR
				break;
				
			case IIR_RDA_FLG:
				RXD_ISR_Process();
				break;
				
			case IIR_CTI_FLG:
				// U0IER = U0IER & (~0x01);
				break;
				
			case IIR_THRE_FLG:
				TXD_ISR_Process();
				break;
				
			default:
				break;
		}
	}

	VICVectAddr	= 0; 
}




?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线亚洲免费视频| 亚洲视频在线观看一区| 久久er99热精品一区二区| 欧美国产激情二区三区| 久久久精品综合| 中文在线一区二区| 一区二区三区国产精品| 99精品热视频| 亚洲人成小说网站色在线| 国产欧美一区二区三区鸳鸯浴| 正在播放亚洲一区| 欧美韩国一区二区| 中文字幕一区二区三区色视频| 亚洲乱码国产乱码精品精可以看| 亚洲欧美日韩国产综合| 免费的国产精品| 国产精华液一区二区三区| 色天使色偷偷av一区二区| 欧美高清激情brazzers| 国产精品久久影院| 一区二区三区成人| 一区精品在线播放| 日韩激情一二三区| 欧洲日韩一区二区三区| 国产精品1区2区| 99精品国产视频| 国产午夜精品福利| 日本欧洲一区二区| 日本黄色一区二区| 国产精品欧美综合在线| 久久国产麻豆精品| 欧美理论在线播放| 亚洲一区在线播放| 色婷婷综合五月| 中文字幕一区二区三区乱码在线| 极品少妇一区二区| 欧美精品一区二区三区久久久| 日韩高清一区在线| 成人动漫精品一区二区| 免费成人深夜小野草| 亚洲综合丁香婷婷六月香| 久久成人av少妇免费| 这里只有精品视频在线观看| 亚洲伦理在线精品| 黄色日韩网站视频| 日韩免费电影一区| 视频一区二区国产| 欧美日韩一二三| 亚洲成a天堂v人片| 欧美日韩精品一区视频| 亚洲国产一区二区a毛片| 色哟哟精品一区| 亚洲精品一二三区| 欧美性大战久久| 午夜激情久久久| 91麻豆精品国产91久久久更新时间 | 久久不见久久见免费视频7 | 欧美私模裸体表演在线观看| 国产欧美久久久精品影院 | 东方欧美亚洲色图在线| 国产欧美日韩亚州综合| 久久精品国产99久久6| 亚洲国产精品精华液2区45| 99国产精品久久久久久久久久久| 国产精品夫妻自拍| 51精品国自产在线| 国产成人av自拍| 亚洲一区二区三区四区不卡| 91精品国产综合久久久久久久| 国产精品夜夜嗨| 亚洲成av人片观看| 26uuu精品一区二区三区四区在线| 成人黄色在线视频| 日本亚洲最大的色成网站www| 久久久综合精品| 欧美日韩一区二区三区在线 | 欧美三区免费完整视频在线观看| 久久精品99国产精品| 亚洲三级电影网站| wwww国产精品欧美| 中文字幕第一区第二区| 精品午夜一区二区三区在线观看| 不卡的电影网站| 日本特黄久久久高潮| 精品精品国产高清a毛片牛牛| 色香蕉久久蜜桃| 亚洲激情男女视频| 欧美人与禽zozo性伦| 国产精品久久久久永久免费观看| 欧美日韩国产乱码电影| 日韩一区二区三| 欧美巨大另类极品videosbest | 日韩高清不卡一区| 国产精品久久久久久久久久久免费看 | 天堂va蜜桃一区二区三区漫画版| 国产精品夜夜嗨| 国产伦精品一区二区三区免费 | 日日欢夜夜爽一区| 亚洲一区在线电影| 亚洲最大色网站| 日本欧美在线看| 日韩专区中文字幕一区二区| 亚洲综合一二区| 亚洲精品一区二区三区精华液 | 秋霞电影网一区二区| 一区二区三区四区高清精品免费观看| 综合欧美亚洲日本| 午夜精品久久一牛影视| 亚洲精品一线二线三线无人区| 在线欧美日韩国产| 欧美日韩一区在线| 这里是久久伊人| 国产日韩欧美不卡| 日韩精品亚洲一区二区三区免费| 免费的国产精品| 色综合天天综合网天天狠天天| 欧美日韩国产一区| 国产午夜精品一区二区三区嫩草 | 精品毛片乱码1区2区3区| 久久久久9999亚洲精品| 久久国产福利国产秒拍| 国产精品麻豆一区二区| 午夜久久久久久久久久一区二区| 国内精品久久久久影院薰衣草| 91农村精品一区二区在线| 欧美mv和日韩mv的网站| 亚洲激情在线激情| 成人a免费在线看| 91精品国产色综合久久| 久久久久久久国产精品影院| 麻豆国产91在线播放| 欧美视频一区二区| 国产精品麻豆一区二区| 高清不卡一二三区| 精品国产一区二区精华| 日韩成人免费看| 欧美久久一区二区| 亚洲影院免费观看| 色婷婷国产精品久久包臀 | 日韩精品专区在线影院重磅| 日韩电影一区二区三区四区| 欧美少妇一区二区| 亚洲黄色免费网站| 欧美性猛交一区二区三区精品| 亚洲欧洲av色图| 欧美三级在线看| 天堂一区二区在线免费观看| 欧美日韩精品欧美日韩精品一综合| 亚洲一区二区三区爽爽爽爽爽| 精品国产免费久久| 欧美日韩一区二区在线观看视频| 亚洲成a天堂v人片| 精品奇米国产一区二区三区| 国内精品第一页| 亚洲三级电影网站| 色94色欧美sute亚洲线路一ni| 亚洲成人午夜电影| 26uuu久久综合| 色婷婷久久综合| 国精产品一区一区三区mba视频| 精品毛片乱码1区2区3区| 精品一区二区三区免费毛片爱 | 伊人夜夜躁av伊人久久| 欧美性色黄大片| 国产不卡视频一区二区三区| 亚洲一区二区美女| 久久亚洲二区三区| 欧美唯美清纯偷拍| 国产麻豆视频一区| 国产一区二区在线免费观看| 在线精品视频一区二区| 青青草视频一区| 亚洲毛片av在线| 国产精品每日更新在线播放网址| 56国语精品自产拍在线观看| 色哟哟精品一区| 91精品福利视频| 色婷婷激情一区二区三区| 成人美女在线视频| 国产一区二区免费看| 国产剧情一区二区| 成人中文字幕电影| 成人免费观看视频| 99久久精品免费看| 日本电影亚洲天堂一区| 色婷婷久久一区二区三区麻豆| 成人涩涩免费视频| 色偷偷久久人人79超碰人人澡| 成人免费三级在线| 成人av免费网站| 91精品国产高清一区二区三区 | 欧美日韩国产综合一区二区三区 | 日韩一级二级三级| 精品免费99久久| 亚洲狠狠丁香婷婷综合久久久| 亚洲综合色自拍一区| 蜜桃视频在线一区| 丁香婷婷综合激情五月色| k8久久久一区二区三区| 91精品国产麻豆国产自产在线 |