📄 uart.h
字号:
/***********************************************Copyright (c)*********************************************
** Guangzou ZLG-MCU Development Co.,LTD.
**
** http://www.zlgmcu.com
**
**--------------File Info---------------------------------------------------------------------------------
** File name: uart.h
** Last modified Date: 2007-10-15
** Last Version: 1.0
** Descriptions: uart头文件
**
**--------------------------------------------------------------------------------------------------------
** Created by: wengshujie
** Created date: 2007-10-15
** Version: 1.0
** Descriptions: 该头文件在CONFIG.h中包括
**
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date:
** Version:
** Descriptions:
**
*********************************************************************************************************/
#ifndef __UART_H
#define __UART_H
#define UART_SEMCONTROL
#define QUEUE_NEW_OPRT
/*********************************************************************************************************
UART器件编号,用户不可修改
*********************************************************************************************************/
#define UART0 0
#define UART1 1
#define UART2 2
#define UART3 3
/*********************************************************************************************************
定义使用到的UART寄存器偏移地址,用户不可修改
*********************************************************************************************************/
#define __B_UART_RBR 0
#define __B_UART_THR 0
#define __B_UART_DLL 0
#define __B_UART_DLM 1
#define __B_UART_IER 1
#define __B_UART_IIR 2
#define __B_UART_FCR 2
#define __B_UART_LCR 3
#define __B_UART_LSR 5
#define __B_UART_SCR 7
/*********************************************************************************************************
标识是接收队列还是发送队列,用户不可修改
*********************************************************************************************************/
#define RX_FIFO 0
#define TX_FIFO 1
/*********************************************************************************************************
操作参数返回,用户不可修改
*********************************************************************************************************/
#define UART_OK 1 /* 串口操作成功 */
#define UART_NOK 0 /* 串口操作失败 */
/*********************************************************************************************************
定义Uart器件数目
*********************************************************************************************************/
#define __UART_MAX_NUM 4 /* LPC23xx有4个UART */
/*********************************************************************************************************
UART器件信息结构结构体,用户不可修改
*********************************************************************************************************/
struct __uart_info {
uint32 uiOffBase; /* uart寄存器间隔= 1 << OffBase*/
volatile uint32 *puiAddrBase; /* uart寄存器基地址 */
uint32 uiQueueReviceFifoLen; /* 软件接收FIFO长度 */
uint32 uiQueueSendFifoLen; /* 软件发送FIFO长度 */
DataQueue *PdqSendBuf; /* 发送队列 */
DataQueue *PdqReviceBuf; /* 接收队列 */
uint32 uiUartFlag; /* 7位置位表示不用队列缓冲
4位置位用于队列使能 */
uint32 uiUartId; /* 用于记录自己的UART通道号 */
uint32 uiUartState; /* 记录收发状态1表示发,0表示收 */
#if defined(UART_SEMCONTROL)
OS_EVENT *pUartSem;
#endif // end #if defined(QUEUE_SEMCONTROL)
};
typedef struct __uart_info __UART_INFO; /* 定义类型 */
typedef __UART_INFO *__PUART_INFO; /* 定义指针 */
/*********************************************************************************************************
配置UART硬件FIFO长度,用户可修改,但没必要时不要修改,修改前先了解硬件FIFO
*********************************************************************************************************/
#define UARTFIFOLEN1 0
#define UARTFIFOLEN4 1
#define UARTFIFOLEN8 2
#define UARTFIFOLEN14 3
#define UART0FIFOLENFUN UARTFIFOLEN8 /* 配置UART0的接收FIFO触发深度 */
#define UART1FIFOLENFUN UARTFIFOLEN8 /* 配置UART1的接收FIFO触发深度 */
#define UART2FIFOLENFUN UARTFIFOLEN8 /* 配置UART2的接收FIFO触发深度 */
#define UART3FIFOLENFUN UARTFIFOLEN8 /* 配置UART3的接收FIFO触发深度 */
/*********************************************************************************************************
配置UART软件FIFO长度,用户可修改
*********************************************************************************************************/
#define QUEUE0REVICEFIFOLEN 256 //64 /* 用户可在此修改接收软FIFO大小*/
#define QUEUE0SENDFIFOLEN TRANSLEN //64 /* 用户可在此修改发送软FIFO大小*/
#define QUEUE0REVICEFIFOLENFUN QUEUE0REVICEFIFOLEN+32//28 /* 用户不要修改 */
#define QUEUE0SENDFIFOLENFUN QUEUE0SENDFIFOLEN+32//28 /* 用户不要修改 */
#define QUEUE1REVICEFIFOLEN 256 //64 /* 用户可在此修改接收软FIFO大小*/
#define QUEUE1SENDFIFOLEN 0 /* 用户可在此修改发送软FIFO大小*/
#define QUEUE1REVICEFIFOLENFUN QUEUE1REVICEFIFOLEN+32//28 /* 用户不要修改 */
#define QUEUE1SENDFIFOLENFUN QUEUE1SENDFIFOLEN+32//28 /* 用户不要修改 */
#define QUEUE2REVICEFIFOLEN TRANSLEN*2 /* 用户可在此修改接收软FIFO大小*/
#define QUEUE2SENDFIFOLEN TRANSINFOLEN*2 /* 用户可在此修改发送软FIFO大小*/
#define QUEUE2REVICEFIFOLENFUN QUEUE2REVICEFIFOLEN+32//28 /* 用户不要修改 */
#define QUEUE2SENDFIFOLENFUN QUEUE2SENDFIFOLEN+32//28 /* 用户不要修改 */
#define QUEUE3REVICEFIFOLEN 0 /* 用户可在此修改接收软FIFO大小*/
#define QUEUE3SENDFIFOLEN TRANSINFOLEN/2 //0x640 /* 用户可在此修改发送软FIFO大小*/
#define QUEUE3REVICEFIFOLENFUN QUEUE3REVICEFIFOLEN+32//28 /* 用户不要修改 */
#define QUEUE3SENDFIFOLENFUN QUEUE3SENDFIFOLEN+32//28 /* 用户不要修改 */
/*********************************************************************************************************
** Function name: uartInit
** Descriptions: 串口初始化
** input parameters: uiId: 子设备号
** pcArg: 字符串指针
** pRsv: 保留参数
** Output parameters: NONE
** Returned value: OPERATE_SUCCESS: 操作成功
** OPERATE_FAIL: 操作失败
** Example: char pUart[]="BaudRate=9600,DataBits=8,StopBits=1,Parity=NONE,RtsControl=NONE";
** uartInit(0,pUart,0);
*********************************************************************************************************/
extern int32 uartInit (uint32 uiId,
char *pcArg,
void *pRsv);
/*********************************************************************************************************
** Function name: uartSetMode
** Descriptions: 设置串口的参数
** input parameters: uiId : 子设备号
** uiCmd :设置参数宏:CTMODE--串口模式;BAUDRATE--串口波特率
** pcArg :字符串指针
** Output parameters: NONE
** Returned value: OPERATE_SUCCESS: 操作成功
** OPERATE_FAIL: 操作失败
** Example1: char pUartBps[] = "BaudRate=9600";
** uartSetMode( 0, BAUDRATE, pUartBps);
** Example2: char pUart[]="DataBits=8,StopBits=1,Parity=NONE,RtsControl=NONE";
** uartSetMode( 0, CTMODE, pUart);
*********************************************************************************************************/
extern int32 uartSetMode (uint32 uiId,
uint32 uiCmd,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -