⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lpc_uart.h

📁 深圳优龙公司LPC2148开发板(与iar公司开发板基本相同)的原理图和配套样例程序
💻 H
字号:
#ifndef __LPC_UART_H
#define __LPC_UART_H

/*************************************************************************
 *
 *    Used with ICCARM and AARM.
 *
 *    (c) Copyright IAR Systems 2003
 *
 *    File name   : LPC_Uart.h
 *    Description :
 *
 *    History :
 *    1. Data: July 13, 2004											
 *  	 Author: Shawn Zhang													
 *  	 Description: Create
 *
 *    2. Data   	 : Oct 9, 2004
 *  	 Author 	 : Stanimir Bonev
 *  	 Description : Modify
 *
 *    $Revision: 1.1 $
 **************************************************************************/

#include <includes.h>
#include <lpc_uart_cnfg.h>

#define FIFODEEP	16

#define BD115200	115200
#define BD38400 	38400
#define BD9600  	9600

#define CR  		0x0D
#define LF  		0x0A

/* Uart line control register bit descriptions */
#define LCR_WORDLENTH_BIT   	  0
#define LCR_STOPBITSEL_BIT  	  2
#define LCR_PARITYENBALE_BIT	  3
#define LCR_PARITYSEL_BIT   	  4
#define LCR_BREAKCONTROL_BIT	  6
#define LCR_DLAB_BIT			  7

/* Uart Interrupt Identification */
#define IIR_RSL 				  0x3
#define IIR_RDA 				  0x2
#define IIR_CTI 				  0x6
#define IIR_THRE				  0x1

/* Uart Interrupt Enable Type*/
#define IER_RBR 				  0x1
#define IER_THRE				  0x2
#define IER_RLS 				  0x4

/* Uart Receiver Errors*/
#define RC_FIFO_OVERRUN_ERR 	  0x1
#define RC_OVERRUN_ERR  		  0x2
#define RC_PARITY_ERR   		  0x4
#define RC_FRAMING_ERR  		  0x8
#define RC_BREAK_IND			  0x10

typedef enum
{
	UART0	= 0 ,
	UART1
} LPC_UartChanel_t;

// Word Lenth type
typedef enum
{
	WordLength5		= 0 ,
	WordLength6 ,
	WordLength7 ,
	WordLength8
} LPC_Uart_WordLenth_t;

// Parity Select type
typedef enum
{
	ParitySelOdd			= 0 ,
	ParitySelEven ,
	ParitySelStickHigh ,
	ParitySelEvenLow
} LPC_Uart_ParitySelect_t;

// FIFO Rx Trigger Level type
typedef enum
{
	FIFORXLEV0				= 0 ,	// 0x1
	FIFORXLEV1 ,		// 0x4
	FIFORXLEV2 ,		// 0x8
	FIFORXLEV3		// 0xe
} LPC_Uart_FIFORxTriggerLevel_t;

// Send and Receive data method mode
typedef enum
{
	POLLING_MODE		= 0 ,
	INTERRUPT_MODE
} LPC_Uart_MethodMode_t;

typedef struct
{
	char RxBuf[RXBUFSIZE];
	char TxBuf[TXBUFSIZE];

	int RxHeadPoint;
	int RxTailPoint;

	int TxHeadPoint;
	int TxTailPoint;

	int RxCount;
	int TxCount;

	volatile int RxFlag;
}LPC_Uart_Buffer_t;

typedef struct
{
	unsigned long BaudRate;			// Baud Rate

	LPC_Uart_WordLenth_t WordLenth;	// Frame format
	bool TwoStopBitsSelect;
	bool ParityEnable;
	LPC_Uart_ParitySelect_t ParitySelect;
	bool BreakEnable;

	bool FIFOEnable;
	int FIFORxTriggerLevel;

	unsigned long InterruptEnable ;	// Interrupt Type: RBR, THRE, RLS

	LPC_Uart_MethodMode_t MethodMode;
	LPC_Uart_Buffer_t UartBuffer;
} LPC_Uart_Config_t;

/* Declare functions */
int UART_Init( LPC_UartChanel_t DevNum );
int UART_PutString( LPC_UartChanel_t DevNum , char* Buf );
char UART_GetChar( LPC_UartChanel_t DevNum );

void UART_PutCharByPolling( LPC_UartChanel_t DevNum , char ch );
int UART_PutStringByPolling( LPC_UartChanel_t DevNum , char* Buf );

char UART_GetCharByPolling( LPC_UartChanel_t DevNum );
char UART_GetKeyByPolling( LPC_UartChanel_t DevNum ) ;
int UART_Get_Number( LPC_UartChanel_t DevNum ) ;

int UART_PutStringByInterrupt( LPC_UartChanel_t DevNum , char* Buf );
char UART_GetCharByInterrupt( LPC_UartChanel_t DevNum , char* ch );

void UART0_ISR( void );
void UART1_ISR( void );

void  Uart_Printf( LPC_UartChanel_t DevNum , char *fmt, ...) ;

#endif //__LPC_UART_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -