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

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

?? uart.c

?? nxp lpc2478 uart demo code
?? C
字號:
/*****************************************************************************
 *   uart.c:  UART API file for NXP LPC23xx/24xx Family Microprocessors
 *
 *   Copyright(C) 2006, NXP Semiconductor
 *   All rights reserved.
 *
 *   History
 *   2006.07.12  ver 1.00    Prelimnary version, first Release
 *
******************************************************************************/
#include "LPC23xx.h"                        /* LPC23xx/24xx definitions */
#include "type.h"
#include "target.h"
#include "irq.h"
#include "uart.h"

volatile DWORD UART0Status, UART1Status;
volatile BYTE UART0TxEmpty = 1, UART1TxEmpty = 1;
volatile BYTE UART0Buffer[BUFSIZE], UART1Buffer[BUFSIZE];
volatile DWORD UART0Count = 0, UART1Count = 0;

/*****************************************************************************
** Function name:		UART0Handler
**
** Descriptions:		UART0 interrupt handler
**
** parameters:			None
** Returned value:		None
** 
*****************************************************************************/
void UART0Handler (void) __irq 
{
  BYTE IIRValue, LSRValue;
  BYTE Dummy = Dummy;

  IENABLE;				/* handles nested interrupt */	
  IIRValue = U0IIR;
    
  IIRValue >>= 1;			/* skip pending bit in IIR */
  IIRValue &= 0x07;			/* check bit 1~3, interrupt identification */
  if ( IIRValue == IIR_RLS )		/* Receive Line Status */
  {
	LSRValue = U0LSR;
	/* 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 = U0RBR;		/* Dummy read on RX to clear 
							interrupt, then bail out */
	  IDISABLE;
	  VICVectAddr = 0;		/* Acknowledge Interrupt */
	  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] = U0RBR;
	  UART0Count++;
	  if ( UART0Count == BUFSIZE )
	  {
		UART0Count = 0;		/* buffer overflow */
	  }	
	}
  }
  else if ( IIRValue == IIR_RDA )	/* Receive Data Available */
  {							    
	/* Receive Data Available */
	UART0Buffer[UART0Count] = U0RBR;
	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 = U0LSR;		/* Check status in the LSR to see if
							valid data in U0THR or not */
	if ( LSRValue & LSR_THRE )
	{
	  UART0TxEmpty = 1;
	}
	else
	{
	  UART0TxEmpty = 0;
	}
  }
    
  IDISABLE;
  VICVectAddr = 0;		/* Acknowledge Interrupt */
}

/*****************************************************************************
** Function name:		UART1Handler
**
** Descriptions:		UART1 interrupt handler
**
** parameters:			None
** Returned value:		None
** 
*****************************************************************************/
void UART1Handler (void) __irq 
{
  BYTE IIRValue, LSRValue;
  BYTE Dummy = Dummy;

  IENABLE;				/* handles nested interrupt */	
  IIRValue = U1IIR;
    
  IIRValue >>= 1;			/* skip pending bit in IIR */
  IIRValue &= 0x07;			/* check bit 1~3, interrupt identification */
  if ( IIRValue == IIR_RLS )		/* Receive Line Status */
  {
	LSRValue = U1LSR;
	/* 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 */
	  UART1Status = LSRValue;
	  Dummy = U1RBR;		/* Dummy read on RX to clear 
							interrupt, then bail out */
	  IDISABLE;
	  VICVectAddr = 0;		/* Acknowledge Interrupt */
	  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 */
	  UART1Buffer[UART1Count] = U1RBR;
	  UART1Count++;
	  if ( UART1Count == BUFSIZE )
	  {
		UART1Count = 0;		/* buffer overflow */
	  }	
	}
  }
  else if ( IIRValue == IIR_RDA )	/* Receive Data Available */
  {
	/* Receive Data Available */
	UART1Buffer[UART1Count] = U1RBR;
	UART1Count++;
	if ( UART1Count == BUFSIZE )
	{
	  UART1Count = 0;		/* buffer overflow */
	}
  }
  else if ( IIRValue == IIR_CTI )	/* Character timeout indicator */
  {
	/* Character Time-out indicator */
	UART1Status |= 0x100;		/* Bit 9 as the CTI error */
  }
  else if ( IIRValue == IIR_THRE )	/* THRE, transmit holding register empty */
  {
	/* THRE interrupt */
	LSRValue = U1LSR;		/* Check status in the LSR to see if
								valid data in U0THR or not */
	if ( LSRValue & LSR_THRE )
	{
	  UART1TxEmpty = 1;
	}
	else
	{
	  UART1TxEmpty = 0;
	}
  }
    
  IDISABLE;
  VICVectAddr = 0;		/* Acknowledge Interrupt */
}

/*****************************************************************************
** Function name:		UARTInit
**
** Descriptions:		Initialize UART0 port, setup pin select,
**						clock, parity, stop bits, FIFO, etc.
**
** parameters:			portNum(0 or 1) and 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 PortNum, DWORD baudrate )
{
  DWORD Fdiv;

  if ( PortNum == 0 )
  {
	PINSEL0 = 0x00000050;       /* RxD0 and TxD0 */

    U0LCR = 0x83;		/* 8 bits, no Parity, 1 Stop bit */
    Fdiv = ( Fpclk / 16 ) / baudrate ;	/*baud rate */
    U0DLM = Fdiv / 256;							
    U0DLL = Fdiv % 256;
	U0LCR = 0x03;		/* DLAB = 0 */
    U0FCR = 0x07;		/* Enable and reset TX and RX FIFO. */

    if ( install_irq( UART0_INT, (void *)UART0Handler, HIGHEST_PRIORITY ) == FALSE )
    {
	  return (FALSE);
    }
   
    U0IER = IER_RBR | IER_THRE | IER_RLS;	/* Enable UART0 interrupt */
    return (TRUE);
  }
  else if ( PortNum == 1 )
  {
#if EA_BOARD_LPC24XX
	PINSEL7 |= 0x0000000F;	/* P3.16 TXD1, P3.17 RXD1 */
#else						/* Default is Keil MCB2300 board */							
	PINSEL0 |= 0x40000000;	/* Enable TxD1 P0.15 */
	PINSEL1 |= 0x00000001;	/* Enable RxD1 P0.16 */
#endif
    U1LCR = 0x83;		/* 8 bits, no Parity, 1 Stop bit */
    Fdiv = ( Fpclk / 16 ) / baudrate ;	/*baud rate */
    U1DLM = Fdiv / 256;							
    U1DLL = Fdiv % 256;
	U1LCR = 0x03;		/* DLAB = 0 */
    U1FCR = 0x07;		/* Enable and reset TX and RX FIFO. */

    if ( install_irq( UART1_INT, (void *)UART1Handler, HIGHEST_PRIORITY ) == FALSE )
    {
	  return (FALSE);
    }
   
    U1IER = IER_RBR | IER_THRE | IER_RLS;	/* Enable UART0 interrupt */
    return (TRUE);
  }
  return( FALSE ); 
}

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

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

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看亚洲a| 成人一级片在线观看| 欧美日韩日日夜夜| 夜夜爽夜夜爽精品视频| 色94色欧美sute亚洲线路一久| 亚洲欧美日韩国产中文在线| 色婷婷综合久久久| 偷拍日韩校园综合在线| 日韩视频免费直播| 国模娜娜一区二区三区| 国产精品乱人伦| 91色九色蝌蚪| 青青草国产成人99久久| 久久综合九色综合欧美就去吻| 顶级嫩模精品视频在线看| 亚洲免费av观看| 国产无遮挡一区二区三区毛片日本| 国产久卡久卡久卡久卡视频精品| 国产精品久久久久影视| 欧美日韩精品一二三区| 国产一区二区中文字幕| 亚洲欧洲99久久| 5858s免费视频成人| 国产一区二区精品在线观看| 一区二区三区四区不卡在线| 欧美一区二区三区成人| 成人理论电影网| 婷婷久久综合九色国产成人| 国产欧美精品一区二区色综合 | 91麻豆精品国产91久久久久久久久 | 午夜精品福利一区二区三区av| 日韩一区和二区| 成人一区二区三区| 免费精品视频在线| 亚洲少妇30p| 日韩欧美你懂的| 日本精品一区二区三区四区的功能| 美日韩一区二区| 成人免费小视频| 欧美精品一区二区三区蜜桃| 色婷婷一区二区三区四区| 国产主播一区二区| 日韩激情一区二区| 中文字幕在线观看一区| 久久夜色精品一区| 欧美日韩视频不卡| av在线一区二区三区| 蜜臀av一区二区在线观看| 一区二区激情视频| 国产精品免费丝袜| 亚洲精品一区二区在线观看| 欧美日韩亚洲丝袜制服| www.欧美日韩国产在线| 国产综合色视频| 男女性色大片免费观看一区二区| 日韩理论片中文av| 国产婷婷色一区二区三区| 欧美一区二区三区在线电影| 91浏览器入口在线观看| 成人sese在线| 国产一区二区视频在线播放| 奇米色一区二区| 五月开心婷婷久久| 一级特黄大欧美久久久| 亚洲免费观看视频| 亚洲人成精品久久久久| 国产精品传媒视频| 国产精品毛片大码女人| 中文av一区特黄| 久久久久久日产精品| 久久青草欧美一区二区三区| 日韩免费观看高清完整版在线观看| 91麻豆精品国产无毒不卡在线观看| 欧美专区亚洲专区| 欧美日韩在线播放三区| 欧美揉bbbbb揉bbbbb| 91电影在线观看| 在线一区二区三区做爰视频网站| 99精品视频中文字幕| eeuss鲁片一区二区三区在线看| 国产精品影音先锋| 国产精品一区免费视频| 国产一区 二区 三区一级| 国产一区二区福利| 国产999精品久久久久久| 成+人+亚洲+综合天堂| 成人精品小蝌蚪| 91亚洲精品久久久蜜桃网站| 91在线精品一区二区| 91精品福利视频| 欧美日韩久久一区二区| 91精品国产黑色紧身裤美女| 欧美本精品男人aⅴ天堂| 久久午夜国产精品| 亚洲欧洲日韩av| 亚洲成在人线免费| 麻豆精品在线观看| 国产不卡视频在线观看| 不卡在线视频中文字幕| 欧美视频一区二区三区| 在线播放91灌醉迷j高跟美女| 日韩视频一区在线观看| 国产欧美日韩中文久久| 亚洲美女视频一区| 美女高潮久久久| 成人黄色软件下载| 欧美中文字幕不卡| 欧美精品一区二区在线观看| 国产精品蜜臀在线观看| 亚洲成人综合视频| 国产精品自在在线| 欧美三区在线观看| 久久人人97超碰com| 亚洲综合色婷婷| 国产一区二区在线视频| 色狠狠av一区二区三区| 精品久久久久久无| 亚洲欧美一区二区三区极速播放| 日本女优在线视频一区二区| 成人精品视频一区二区三区尤物| 欧美精品在欧美一区二区少妇| www亚洲一区| 一区二区免费看| 国产69精品久久99不卡| 欧美日韩免费高清一区色橹橹| 久久久久久久av麻豆果冻| 一区二区三区欧美激情| 国产综合色在线| 欧美日韩国产综合一区二区三区 | 国产精品国产三级国产| 日本中文在线一区| 9l国产精品久久久久麻豆| 欧美一级xxx| 亚洲国产美国国产综合一区二区| 国产一区二三区好的| 欧美一区永久视频免费观看| 中文字幕色av一区二区三区| 麻豆精品在线观看| 欧美三片在线视频观看| 国产精品家庭影院| 国产乱码精品一区二区三区忘忧草| 欧美性高清videossexo| 国产精品电影一区二区| 国产老肥熟一区二区三区| 欧美一区二区三区电影| 亚洲成人动漫在线免费观看| 一本一本大道香蕉久在线精品| 久久在线观看免费| 老司机午夜精品99久久| 欧美精品久久一区| 亚洲午夜一区二区| 99久久久精品| |精品福利一区二区三区| 国产精品一区二区久久精品爱涩| 日韩欧美高清dvd碟片| 天天色图综合网| 欧美亚洲一区二区在线| 亚洲乱码精品一二三四区日韩在线| 国产福利一区在线| 久久免费美女视频| 国产在线麻豆精品观看| 欧美一区二区三区婷婷月色| 亚洲1区2区3区视频| 欧美亚洲动漫精品| 亚洲国产精品欧美一二99| 色域天天综合网| 亚洲精品国久久99热| 在线欧美小视频| 亚洲精品一二三| 91成人免费网站| 一区二区高清在线| 欧美性猛交一区二区三区精品| 亚洲精品视频在线| 日本道色综合久久| 亚洲五月六月丁香激情| 欧美日韩免费在线视频| 午夜欧美电影在线观看| 日韩一区二区影院| 精品综合久久久久久8888| 久久蜜桃香蕉精品一区二区三区| 国产美女一区二区三区| 国产日产欧美一区二区三区| 国产伦精品一区二区三区在线观看| 久久精品一区四区| 91麻豆精品视频| 亚洲国产综合91精品麻豆| 欧美高清hd18日本| 黄页网站大全一区二区| 国产精品天干天干在观线| 一本到一区二区三区| 天堂成人免费av电影一区| 日韩视频一区在线观看| 成人综合在线视频| 亚洲精品免费在线播放| 日韩三级在线免费观看| 国产精品自拍一区| 亚洲精品中文字幕在线观看| 69堂精品视频| 成人性生交大合| 日日夜夜精品视频天天综合网|