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

📄 serial.h

📁 AT91RM9200-UC/OS-II,clock,irq,usart,pio等驱动
💻 H
字号:
#ifndef _SERIAL_H
#define _SERIAL_H


#define UART_CNT	5		//串口设备的个数

typedef struct
{
	INT8U len;		//数据位 5,6,7,8
	INT8U parity;	//校验位 0-e,1-o,4-n
	INT8U stop;		//停止位 1,2,15-1.5
	int baud;		//波特率
	int timeout;	//超时时间	
}DATA_ATRIB;

#define RECV_BUF_LEN	10			//接收缓冲区长度
#define SEND_BUF_LEN	300			//发送缓冲区长度
#define RECV_ERR_LEN	0			//接收错误

//接收缓冲环行结构
typedef struct Circle_Buf
{
	int 	len;					//该结构缓冲区的长度
	INT8U 	buf[RECV_BUF_LEN];		//该结构缓冲区
	struct  Circle_Buf *pNext;		//环行指针
}Circle_Buf;



typedef struct at91_chan
{
	int Id;									//串口外设ID,目前用该外设的中断号
	BOOLEAN flag;							//设备是否可用标志
	DATA_ATRIB data;						//串口通讯属性
	AT91PS_USART pUart;						//设备的基地址
	void (*GetChar)(struct at91_chan *,int);//接收数据处理函数
	void (*PutChar)(struct at91_chan *,int);//发送数据处理函数	
	
	Circle_Buf Cbuf[2];						//接收数据环行缓冲,用于PDC环行指针
	INT8U  Buf_bake[RECV_BUF_LEN];			//接收的有效数据保存区
	Circle_Buf *pHead;						//环行缓冲的头指针,该指针指向目前
											//正在使用的缓冲(既PDC_RPR指向的缓冲)
	
	OS_EVENT 	*pMutexSem;					//发送缓冲区的竞争信号量
	INT8S	Sbuf[SEND_BUF_LEN];				//发送缓冲区
	
	//OS_EVENT    *pQMsg;						//串口发送的消息
	//void *QMsgTbl[MSG_QUEUE_SIZE];			//串口数据发送消息队列
	//TMessage	Msg;						//消息体
}AT91_CHAN;


extern AT91_CHAN UART_CHAN[UART_CNT];

#define INIT_UART	\
/*ID*/	{	0,\
/*flag*/	FALSE,\
/*data*/	{8,4,1,115200,100},\
/*pUart*/	NULL,\
/*GetChar*/	NULL,\
/*PutChar*/	NULL,\
/*Cbuf*/	{{0,},},\
/*Buf_bake*/{0,},\
/*pHead*/	NULL,\
/*MutexSem*/NULL,\
/*Sbuf*/	{0,}\
		}
		

#define  FRAME_FULL		0
#define  FRAME_TIMEOUT	1
#define  FRAME_ERROR	2

void SetUartIO(AT91_CHAN *pUart);
void SetUartMode(AT91_CHAN *pUart);
void SetUartPDC(AT91_CHAN *pUart);
void SetUartMutexSem(AT91_CHAN *pUart);
void SerialInit(AT91_CHAN pUart);
void SerialIntHandling(int uart_base,int uart_vector);
void UartPrintf(int id,const char *format, ...);
void UartGetChar(AT91_CHAN *pUart,int len);
void UartPutChar(AT91_CHAN *pUart,int len);

#endif

⌨️ 快捷键说明

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