📄 hw_uart.h
字号:
/******************************************************************/
/* Copyright (C) 2007 ROCK-CHIPS FUZHOU . All Rights Reserved. */
/*******************************************************************
File : hw_uart.h
Desc : 定义UART的寄存器结构体\寄存器位的宏定义\接口函数
Author : huangxinyu
Date : 2007-05-30
Notes :
$Log: hw_uart.h,v $
Revision 1.2 2007/10/08 02:38:49 Lingzhaojun
添加版本自动注释脚本
* huangxinyu 2007-06-01 修改uart接口名称
*********************************************************************/
#ifndef _UART_H
#define _UART_H
#include "Hw_include.h"
//#include "kdrv_uart.h"
/*********************************************************************
MACRO DEFINITIONS
*********************************************************************/
#define FCR_FIFO_EN 0x01 /* Fifo enable */
#define FCR_RXSR 0x02 /* Receiver soft reset */
#define FCR_TXSR 0x04 /* Transmitter soft reset */
#define MCR_DTR 0x01
#define MCR_RTS 0x02
#define MCR_DMA_EN 0x04
#define MCR_TX_DFR 0x08
#define LCR_WLS_MSK 0x03 /* character length slect mask */
#define LCR_WLS_5 0x00 /* 5 bit character length */
#define LCR_WLS_6 0x01 /* 6 bit character length */
#define LCR_WLS_7 0x02 /* 7 bit character length */
#define LCR_WLS_8 0x03 /* 8 bit character length */
#define LCR_STB 0x04 /* Number of stop Bits, off = 1, on = 1.5 or 2) */
#define LCR_PEN 0x08 /* Parity eneble */
#define LCR_EPS 0x10 /* Even Parity Select */
#define LCR_STKP 0x20 /* Stick Parity */
#define LCR_SBRK 0x40 /* Set Break */
#define LCR_BKSE 0x80 /* Bank select enable */
#define LSR_DR 0x01 /* Data ready */
#define LSR_OE 0x02 /* Overrun */
#define LSR_PE 0x04 /* Parity error */
#define LSR_FE 0x08 /* Framing error */
#define LSR_BI 0x10 /* Break */
#define LSR_THRE 0x20 /* Xmit holding register empty */
#define LSR_TEMT 0x40 /* Xmitter empty */
#define LSR_ERR 0x80 /* Error */
/* useful defaults for LCR */
#define LCR_8N1 0x03
#define INVALID_CHAR 0XFF //huangsl
/*********************************************************************
ENUMERATIONS AND STRUCTURES
*********************************************************************/
typedef volatile struct uartRegister
{
unsigned char rbr; /* 0 */
int pad1:
24;
unsigned char ier; /* 1 */
int pad2:
24;
unsigned char fcr; /* 2 */
int pad3:
24;
unsigned char lcr; /* 3 */
int pad4:
24;
unsigned char mcr; /* 4 */
int pad5:
24;
unsigned char lsr; /* 5 */
int pad6:
24;
unsigned char msr; /* 6 */
int pad7:
24;
unsigned char scr; /* 7 */
int pad8:
24;
} uartRegister_t, *puartRegister_t;
#define thr rbr
#define iir fcr
#define dll rbr
#define dlm ier
typedef struct _KDRV_UART_IFACE
{
//公共头部
INT32U iSIze; //sizeof iface
RK_GUID iGUID; //需要系统统一设定,可以用于区分不同的模块
INT32U sb; //read only ,内部赋值
BOOLEAN iValid; //read only ,内部赋值
//私有数据部分.
void(* Uart_PowerOnInit)(puartRegister_t , int);
char(* Uart_ReadChar)(puartRegister_t);
void(* Uart_WriteChar)(puartRegister_t , char);
void(*Uart_PowerOffDeinit)(puartRegister_t , int);
} KDRV_UART_IFACE , *PKDRV_UART_IFACE;
/*********************************************************************
FUNCTION PROTOTYPES
*********************************************************************/
void Uart_PowerOnInit(puartRegister_t port, int baud_divisor);
char Uart_ReadChar(puartRegister_t port);
void Uart_WriteChar(puartRegister_t port, char c);
int Uart_Tstc(puartRegister_t port);
void Uart_PowerOffDeinit(puartRegister_t port, int baud_divisor);
/*********************************************************************
EXTERN DECLARATIONS
*********************************************************************/
#endif /* _UART_H */
/*********************************************************************
END OF FILE
*********************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -