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

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

?? uart.c

?? nxp的LPC2888處理器的示例代碼.
?? C
字號:
/*****************************************************************************
 *   uart.c:  UART API file for NXP LPC288x Family Microprocessors
 *
 *   Copyright(C) 2006, NXP Semiconductor
 *   All rights reserved.
 *
 *   History
 *   2006.07.12  ver 1.00    Prelimnary version, first Release
 *
******************************************************************************/
#include "LPC288x.h"                        /* LPC288x definitions */
#include "type.h"
#include "target.h"
#include "irq.h"
#include "uart.h"

volatile DWORD UART0Status;
volatile BYTE UART0TxEmpty = 1;
volatile BYTE UART0Buffer[BUFSIZE];
volatile DWORD UART0Count = 0;

/*****************************************************************************
** Function name:		UART_ISR
**
** Descriptions:		UART interrupt handler
**
** parameters:			None
** Returned value:		None
** 
*****************************************************************************/
void UART_ISR(void) 
{
  BYTE IIRValue, LSRValue;
  BYTE Dummy;
	
  IIRValue = UART_IIR;
    
  IIRValue >>= 1;			/* skip pending bit in IIR */
  IIRValue &= 0x07;			/* check bit 1~3, interrupt identification */
  if ( IIRValue == IIR_RLS )		/* Receive Line Status */
  {
	LSRValue = UART_LSR;
	/* Receive Line Status */
	if ( LSRValue & (LSR_OE|LSR_PE|LSR_FE|LSR_RXFE|LSR_BI) )
	{
	  /* There are errors or break interrupt */
	  /* Read LSR will clear the interrupt */
	  UART0Status = LSRValue;
	  Dummy = UART_RBR;		/* Dummy read on RX to clear 
							interrupt, then bail out */
	  return;
	}
	if ( LSRValue & LSR_RDR )	/* Receive Data Ready */			
	{
	  /* If no error on RLS, normal ready, save into the data buffer. */
	  /* Note: read RBR will clear the interrupt */
	  UART0Buffer[UART0Count] = UART_RBR;
	  UART0Count++;
	  if ( UART0Count == BUFSIZE )
	  {
		UART0Count = 0;		/* buffer overflow */
	  }	
	}
  }
  else if ( IIRValue == IIR_RDA )	/* Receive Data Available */
  {
	/* Receive Data Available */
	UART0Buffer[UART0Count] = UART_RBR;
	UART0Count++;
	if ( UART0Count == BUFSIZE )
	{
	  UART0Count = 0;		/* buffer overflow */
	}
  }
  else if ( IIRValue == IIR_CTI )	/* Character timeout indicator */
  {
	/* Character Time-out indicator */
	UART0Status |= 0x100;		/* Bit 9 as the CTI error */
  }
  else if ( IIRValue == IIR_THRE )	/* THRE, transmit holding register empty */
  {
	/* THRE interrupt */
	LSRValue = UART_LSR;		/* Check status in the LSR to see if
								valid data in U0THR or not */
	if ( LSRValue & LSR_THRE )
	{
	  UART0TxEmpty = 1;
	}
	else
	{
	  UART0TxEmpty = 0;
	}
  }
  return;
}

/*****************************************************************************
** Function name:		UARTInit
**
** Descriptions:		Initialize UART0 port, setup pin select,
**						clock, parity, stop bits, FIFO, etc.
**
** parameters:			UART baudrate
** Returned value:		true or false, return false only if the 
**						interrupt handler can't be installed to the 
**						VIC table
** 
*****************************************************************************/
DWORD UARTInit( DWORD baudrate )
{
  DWORD Fdiv;

  UART_FCR = 0x07;
  UART_LCR = 0x83;

#if 0
  /* Please note, by default, the Fractional Divider doesn't
  impact the baudrate, so, the PCLK going to the UART is the same
  as CCLK which is 60Mhz, the PCLK through Fractional Divider to 
  the UART is 30Mhz, see comments in target.c file, so, Fpclk defined 
  in the target.h should be adjusted accordingly. */  
  /* If UART_FDR is set to 0x11, the Fpclk is 30Mhz, if UART_FCR is
  set to 0x10(power on reset value), the Fpclk is 60Mhz. */
  UART_FDR = 0x11;
#endif

  Fdiv = ( Fpclk / 16 ) / baudrate ;	/*baud rate */
  UART_DLM = Fdiv / 256;							
  UART_DLL = Fdiv % 256;
  UART_LCR = 0x03;

  /* If DMA is used, UART interrupt will not be used. */
#if !UART_DMA_ENABLE
  if ( install_IRQ(12, 1, UART_ISR ) == FALSE )
  {
	return( FALSE );
  }
  INT_REQ12=(1<<28)|(1<<27)|(1<<26)|(1<<16)|0x1;
  INT_VECTOR0=IRQ_TABLE_BASE & MASK_INDEX;
  UART_IER = IER_RBR | IER_THRE | IER_RLS;	/* Enable UART0 interrupt */
#endif
  return (TRUE);
}

/*****************************************************************************
** Function name:		UARTSend
**
** Descriptions:		Send a block of data to the UART 0 port based
**				on the data length
**
** parameters:			buffer pointer, and data length
** Returned value:		None
** 
*****************************************************************************/
void UARTSend(BYTE *BufferPtr, DWORD Length )
{
  while ( Length != 0 )
  {
	/* THRE status, contain valid data */
	while ( !(UART0TxEmpty & 0x01) );
	UART_THR = *BufferPtr;
	UART0TxEmpty = 0;	/* not empty in the THR until it shifts out */
	BufferPtr++;
	Length--;
  }
  return;
}

/******************************************************************************
**                            End Of File
******************************************************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区在线免费| 成人h动漫精品一区二区| 日韩在线一区二区| 亚洲精品一区二区精华| 成人sese在线| 琪琪一区二区三区| 国产精品国产三级国产aⅴ原创 | 五月婷婷久久丁香| 国产精品久久久一本精品| 日韩成人午夜电影| 国产一区不卡精品| 日韩欧美区一区二| 亚洲卡通动漫在线| 天堂午夜影视日韩欧美一区二区| 蓝色福利精品导航| 中文天堂在线一区| 国产v日产∨综合v精品视频| 亚洲精品综合在线| 国产精品久久久久久亚洲伦| 欧美色精品天天在线观看视频| 精品一区二区三区影院在线午夜| 韩国三级电影一区二区| 精品视频999| 午夜精品福利一区二区蜜股av | 国产成人免费视频一区| 久久亚洲综合色| 欧美成人三级在线| 欧美系列在线观看| 91在线一区二区三区| 国产成人精品亚洲午夜麻豆| 日韩一级完整毛片| 日韩国产精品久久久| 777午夜精品免费视频| 亚洲视频香蕉人妖| 91精品国产综合久久久久久| 午夜欧美电影在线观看| 日韩免费高清电影| 色琪琪一区二区三区亚洲区| 一区二区三区四区不卡在线| 亚洲免费av网站| 欧美mv和日韩mv的网站| 国产精品嫩草久久久久| 蜜桃av一区二区三区电影| 成人性生交大片免费看在线播放| 在线亚洲人成电影网站色www| 日韩午夜在线观看视频| √…a在线天堂一区| 久久国产麻豆精品| 欧美午夜精品久久久久久孕妇| 日韩欧美国产午夜精品| 亚洲青青青在线视频| 国产一区视频导航| 88在线观看91蜜桃国自产| 成人欧美一区二区三区视频网页| 蜜臀av一区二区在线观看| 日本久久电影网| 中文字幕第一区综合| 奇米一区二区三区| 欧美三级韩国三级日本三斤 | 欧美日本韩国一区二区三区视频| 国产日产欧美一区二区三区| 日本不卡免费在线视频| 欧美影视一区在线| 最新国产の精品合集bt伙计| 国产精品一二三四五| 6080yy午夜一二三区久久| 亚洲美女电影在线| 91亚洲男人天堂| 国产欧美视频一区二区| 狠狠狠色丁香婷婷综合久久五月| 成人激情文学综合网| 欧美精品丝袜久久久中文字幕| 国产欧美一区视频| 1区2区3区精品视频| 色诱亚洲精品久久久久久| 国产精品一二三在| 黑人巨大精品欧美一区| 99久久综合99久久综合网站| 欧美三级电影在线看| 日韩欧美一级二级三级| 欧美日韩高清一区二区| 日韩国产精品91| 欧美激情综合五月色丁香| 中文成人av在线| 午夜精品久久久久久久久久| 国产成人鲁色资源国产91色综| 国产综合色产在线精品| 亚洲精品一区二区精华| 国产在线日韩欧美| 国产精品免费av| 国产.精品.日韩.另类.中文.在线.播放| 欧美色电影在线| 国模大尺度一区二区三区| 国产精品网站在线观看| 欧美曰成人黄网| 亚洲va天堂va国产va久| 久久精品av麻豆的观看方式| 精久久久久久久久久久| 欧美在线观看禁18| 亚洲丝袜精品丝袜在线| 国产激情偷乱视频一区二区三区| 色综合天天狠狠| 欧美激情综合五月色丁香| 麻豆国产91在线播放| 欧美一区午夜精品| 国产精品理伦片| 国产成人精品综合在线观看| 欧美亚洲一区二区在线观看| 国产亚洲成年网址在线观看| 色偷偷88欧美精品久久久| 久久久影视传媒| 精品亚洲国产成人av制服丝袜 | 欧美一区二区三区系列电影| 日韩一卡二卡三卡国产欧美| 亚洲成人久久影院| 欧美日韩国产一二三| 亚洲黄色免费网站| 久久久蜜桃精品| 久久影院视频免费| 日韩视频国产视频| 欧美高清dvd| 884aa四虎影成人精品一区| 北岛玲一区二区三区四区| 国产揄拍国内精品对白| 久久成人麻豆午夜电影| 亚洲人成在线观看一区二区| 国产视频一区二区在线观看| 欧美视频一区二区| 色婷婷综合五月| 成人av免费在线观看| 免费成人在线视频观看| 中文字幕久久午夜不卡| 欧美精品日韩一本| 一本到一区二区三区| 国产精品996| 久久精品免费观看| 最新高清无码专区| 久久久久久久久久久99999| 成人激情黄色小说| 欧洲激情一区二区| 99久久亚洲一区二区三区青草| 欧美一三区三区四区免费在线看| 成人黄色小视频| 亚洲国产毛片aaaaa无费看 | 91极品视觉盛宴| 国产盗摄精品一区二区三区在线 | 69久久夜色精品国产69蝌蚪网| 国产精品美女一区二区三区| 成人爽a毛片一区二区免费| 日本不卡的三区四区五区| 午夜精品一区二区三区免费视频 | 99免费精品视频| 国内一区二区在线| 欧美午夜电影一区| 日本一区二区在线不卡| 美女免费视频一区| 日韩欧美二区三区| 亚洲综合男人的天堂| 99久久久免费精品国产一区二区| www.日本不卡| 欧美视频中文字幕| 欧美日韩一区视频| 久久影院午夜论| 国产精品久久福利| 亚洲品质自拍视频网站| 五月天激情综合| 精品一区二区三区视频| 成人网页在线观看| 欧美日韩久久久久久| 欧美肥胖老妇做爰| 国产99久久久国产精品免费看| 久久97超碰国产精品超碰| 国产.精品.日韩.另类.中文.在线.播放| 欧美日韩精品一区二区在线播放| 国产精品毛片大码女人| 国产精品免费久久久久| 一区二区三区蜜桃| 亚洲精品大片www| 日韩精彩视频在线观看| 蜜臀久久99精品久久久久宅男| 欧美在线观看视频一区二区三区 | 精品国产乱码久久| 亚洲色图视频网| 欧美亚洲高清一区| 国产成人精品免费看| 亚洲激情第一区| 久久精品亚洲麻豆av一区二区 | 在线精品视频小说1| 老色鬼精品视频在线观看播放| 欧美激情一区二区三区蜜桃视频| 99在线精品观看| 26uuu久久综合| 粉嫩av一区二区三区粉嫩| 日韩久久免费av| 久久99精品国产麻豆婷婷洗澡| 日韩一区二区三区在线| 丝袜诱惑亚洲看片| 在线观看国产日韩| 综合网在线视频| 一区二区不卡在线视频 午夜欧美不卡在|