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

📄 uart0.h

📁 SmartARM2400系列开发板全套资料
💻 H
字号:
/****************************************Copyright (c)****************************************************
**                      Guangzhou ZLG-MCU Development Co.,LTD.
**                            graduate school
**                        http://www.zlgmcu.com
**
**--------------File Info------------------------------------------------------
** File Name: UART.h
** Last modified Date: 2004-11-29
** Last Version: 1.0
** Description: operater UART for LPC2xxx
**
**-----------------------------------------------------------------------------
** Created date: 2004-11-29
** Version: 1.0
** Description: operater UART for LPC2xxx
**
**-----------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Description:
**
*********************************************************************************************************/
#ifndef __UART_H
#define __UART_H

#include "config.h"


#ifdef __cplusplus
	extern "C" {
#endif

/*
 * 串口接收缓冲区大小
 */
#ifndef UART_RECV_BUF_SIZE
	#define UART_RECV_BUF_SIZE		50
#endif

/*
 * 线控制寄存器U0LCR各位
 */
enum {
/*
 * 字长度选择
 */
	UART_WORD_LEN_5		= 0x00,
	UART_WORD_LEN_6		= 0x01,
	UART_WORD_LEN_7		= 0x02,
	UART_WORD_LEN_8		= 0x03,
/*
 * 停止位选择
 */
	UART_STOP_BIT_1		= 0x00,
	UART_STOP_BIT_2		= 0x04,
/*
 * 奇偶使能
 */
	UART_PARITY_EN		= 0x08,
/*
 * 奇偶选择
 */
	UART_ODD			= 0x00,
	UART_EVEN			= 0x10,
	UART_FORCE1			= 0x20,
	UART_FORCE0			= 0x30,
/*
 * 间隔使能
 */
	UART_INTERVAL_EN	= 0x40,
/*
 * 除数锁存访问位使能
 */
	UART_RBR_EN			= 0x80
};

/*
 * 中断标识寄存器U0IIR各位
 */
enum
{
	UART_IIR_FLAG = 0x01,												/* 中断标识,有中断被挂起为0。	*/
	UART_IIR_THRE = 0x02,												/* 发送寄存器空中断				*/
	UART_IIR_RDA  = 0x04,												/* 接收数据可用中断				*/
	UART_IIR_RLS  = 0x06,												/* 接收线状态中断				*/
	UART_IIR_CTI  = 0x0C												/* 字符超时指示					*/
};



/*
 * FIFO控制寄存器U0FCR(为与线控制寄存器合并成一个参数,各位左移8位)
 */
enum 
{
	UART_FIFO_EN	= 0x0100,
	UART_FIFO_1		= 0x0000,
	UART_FIFO_4		= 0x4000,
	UART_FIFO_8		= 0x8000,
	UART_FIFO_14	= 0xC000
};

/*
 * 线状态寄存器U0LSR各位
 */
enum 
{
	UART_LSR_RDR	= 0x01,												/* 接收数据就绪					*/
	UART_LSR_OE		= 0x02,												/* 溢出错误						*/
	UART_LSR_PE		= 0x04,												/* 奇偶错误						*/
	UART_LSR_FE		= 0x08,												/* 帧错误						*/
	UART_LSR_BI		= 0x10,												/* 间隔错误						*/
	UART_LSR_THRE	= 0x20,												/* 发送保持寄存器空				*/
	UART_LSR_TEMT	= 0x40,												/* 发送器空						*/
	UART_LSR_RXFE	= 0x80												/* 溢出错误						*/
};

/*
 * 标准通信波特率(Communicate Baudrate)
 */
enum 
{
	CBR_110		=    110,
	CBR_300		=    300,
	CBR_1200	=   1200,
	CBR_2400	=   2400,
	CBR_4800	=   4800,
	CBR_9600	=   9600,
	CBR_14400	=  14400,
	CBR_19200	=  19200,
	CBR_38400	=  38400,
	CBR_56000	=  56000,
	CBR_57600	=  57600,
	CBR_115200	= 115200
};

/*
 * 默认配置
 */
#define	UART_DEFAULT_CFG	(UART_WORD_LEN_8 | UART_STOP_BIT_1 | UART_FIFO_EN | UART_FIFO_8)

/*********************************************************************************************************
** Function name: UART0_Init
** Descriptions:  Initialize the UART, Set baudrate and other config.
				 (初始化串口,设置波特率和其它配置)
** Input:	nBaudrate: the communicate baudrate (波特率)
**			nConfig:the other config, eg parity... (其它配置,如奇偶校验等)
** Output:	none (无)
*********************************************************************************************************/
void  UART0_Init(uint32 nBaudrate, uint16 nConfig);

/*********************************************************************************************************
** Function name: UART0_Send
** Descriptions:  Send datum with UART (从串口发送数据)
** Input:	pBuf: the point of datum (指向要发送的数据的指针)
**			nLen: the length of datum (要发送的数据的长度,以字节为单位)
** Output:	return: the count of sended datum in fact (实际已发送数据的长度)
*********************************************************************************************************/
uint32 UART0_Send(const void *pBuf, uint32 nLen);

/*********************************************************************************************************
** Function name: UART0_Receive
** Descriptions:  Receive datum from UART (从串口接收数据)
** Input:	pBuf: the point of datum (接收数据缓冲区的指针)
**			nLen: the length of datum (要接收的数据的长度,以字节为单位)
** Output:	return: the count of sended datum in fact (实际已接收数据的长度)
*********************************************************************************************************/
uint32 UART0_Receive(void *pBuf, uint32 nLen);

/*********************************************************************************************************
** Function name: UART0_SetTimeout
** Descriptions:  set the timeout of receive data (设置接收数据的超时时间)
** Input:	nTimeout: the timeout value (超时时间值,以ms为单位)
** Output:	NONE (无)
*********************************************************************************************************/
void UART0_SetTimeout(uint32 nTimeout);


#ifdef __cplusplus
	}
#endif

#endif 																	/* __UART_H						*/

⌨️ 快捷键说明

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