?? uartexpd.h
字號(hào):
/*************************************************************************/
/* */
/* 文件名:UARTEXPD.H */
/* */
/* 硬件支持:s3c2410x SC28L92 */
/* */
/* */
/* */
/* 版本:Ver1.0 */
/* */
/* 作者:楊天池 */
/* */
/* 時(shí)間:2004年10月12日 */
/* */
/* */
/* */
/* */
/*************************************************************************/
//chip 1 address, after MMU,read mode
#ifndef _XW_XCOM1_SYS
#define _XW_XCOM1_SYS
#ifdef __cplusplus
extern "C" { // C聲明在 C++ 程序中
#endif
#define rMRXA_C1 (*(volatile unsigned char *)0X84000e00)
#define rSRA_C1 (*(volatile unsigned char *)0X84000e02)
#define rRXFIFOA_C1 (*(volatile unsigned char *)0X84000e06)
#define rIPCR_C1 (*(volatile unsigned char *)0X84000e08)
#define rISR_C1 (*(volatile unsigned char *)0X84000e0A)
#define rCTU_C1 (*(volatile unsigned char *)0X84000e0C)
#define rCTL_C1 (*(volatile unsigned char *)0X84000e0E)
#define rMRXB_C1 (*(volatile unsigned char *)0X84000e10)
#define rSRB_C1 (*(volatile unsigned char *)0X84000e12)
#define rRXFIFOB_C1 (*(volatile unsigned char *)0X84000e16)
#define rIV68K_C1 (*(volatile unsigned char *)0X84000e18)
#define rMISC_C1 (*(volatile unsigned char *)0X84000e1A)
#define rIPR_C1 (*(volatile unsigned char *)0X84000e1C)
#define rSTARTCC_C1 (*(volatile unsigned char *)0X84000e1E)
#define rSTOPCC_C1 (*(volatile unsigned char *)0X84000e20)
//chip 1 address, after MMU,write mode
#define rCSRA_C1 (*(volatile unsigned char *)0X84000e02)
#define rCRA_C1 (*(volatile unsigned char *)0X84000e04)
#define rTXFIFOA_C1 (*(volatile unsigned char *)0X84000e06)
#define rACR_C1 (*(volatile unsigned char *)0X84000e08)
#define rIMR_C1 (*(volatile unsigned char *)0X84000e0A)
#define rCTPU_C1 (*(volatile unsigned char *)0X84000e0C)
#define rCTPL_C1 (*(volatile unsigned char *)0X84000e0E)
#define rCSRB_C1 (*(volatile unsigned char *)0X84000e12)
#define rCRB_C1 (*(volatile unsigned char *)0X84000e14)
#define rTXFIFOB_C1 (*(volatile unsigned char *)0X84000e16)
#define rOPCR_C1 (*(volatile unsigned char *)0X84000e1C)
#define rSOPR_C1 (*(volatile unsigned char *)0X84000e1E)
#define rROPR_C1 (*(volatile unsigned char *)0X84000e20)
//chip 2 address, after MMU,read mode
#define rMRXA_C2 (*(volatile unsigned char *)0X84000F00)
#define rSRA_C2 (*(volatile unsigned char *)0X84000F02)
#define rRXFIFOA_C2 (*(volatile unsigned char *)0X84000F06)
#define rIPCR_C2 (*(volatile unsigned char *)0X84000F08)
#define rISR_C2 (*(volatile unsigned char *)0X84000F0A)
#define rCTU_C2 (*(volatile unsigned char *)0X84000F0C)
#define rCTL_C2 (*(volatile unsigned char *)0X84000F0E)
#define rMRXB_C2 (*(volatile unsigned char *)0X84000F10)
#define rSRB_C2 (*(volatile unsigned char *)0X84000F12)
#define rRXFIFOB_C2 (*(volatile unsigned char *)0X84000F16)
#define rIV68K_C2 (*(volatile unsigned char *)0X84000F18)
#define rMISC_C2 (*(volatile unsigned char *)0X84000F1A)
#define rIPR_C2 (*(volatile unsigned char *)0X84000F1C)
#define rSTARTCC_C2 (*(volatile unsigned char *)0X84000F1E)
#define rSTOPCC_C2 (*(volatile unsigned char *)0X84000F20)
//chip 2 address, after MMU,write mode
#define rCSRA_C2 (*(volatile unsigned char *)0X84000F02)
#define rCRA_C2 (*(volatile unsigned char *)0X84000F04)
#define rTXFIFOA_C2 (*(volatile unsigned char *)0X84000F06)
#define rACR_C2 (*(volatile unsigned char *)0X84000F08)
#define rIMR_C2 (*(volatile unsigned char *)0X84000F0A)
#define rCTPU_C2 (*(volatile unsigned char *)0X84000F0C)
#define rCTPL_C2 (*(volatile unsigned char *)0X84000F0E)
#define rCRB_C2 (*(volatile unsigned char *)0X84000F14)
#define rTXFIFOB_C2 (*(volatile unsigned char *)0X84000F16)
#define rOPCR_C2 (*(volatile unsigned char *)0X84000F1C)
#define rSOPR_C2 (*(volatile unsigned char *)0X84000F1E)
#define rROPR_C2 (*(volatile unsigned char *)0X84000F20)
//UART communication mode
//rx controls RTS
#define CC_NO_RTS (0X0<<7)
#define CC_WITH_RTS (0X1<<7)
//rx int bit1
#define CC_RXRDY (0X0<<6)
#define CC_FFULL (0X1<<6)
//error mode
#define CC_ERRCHAR (0X0<<5)
#define CC_ERRBLOCK (0X1<<5)
//parity mode
#define CC_WITH_PARITY (0X0<<3)
#define CC_FORCE_PARITY (0X1<<3)
#define CC_NO_PARITY (0X2<<3)
#define CC_MLTI_DROP (0X3<<3)
//parity type
#define CC_EVEN (0X0<<2)
#define CC_ODD (0X1<<2)
//mode
#define NORMAL (0X0)
#define EXTENDI (0X1)
#define EXTENDII (0X4)
//data
#define CC_DATA_5BIT (0x0)
#define CC_DATA_6BIT (0x1)
#define CC_DATA_7BIT (0x2)
#define CC_DATA_8BIT (0x3)
//chip control command
//only use in CRx register config
#define SET_MR1 (0X1<<4)
#define RST_RECV (0X2<<4)
#define RST_TRANS (0X3<<4)
#define RST_ERRSTAT (0X4<<4)
#define RST_CHA (0X5<<4)
#define START_BREAK (0X6<<4)
#define STOP_BREAK (0X7<<4)
#define ASST_RTSN (0X8<<4)
#define NEG_RTSN (0X9<<4)
#define TIMEOUT_ON (0XA<<4)
#define SET_MR0 (0XB<<4)
#define TIMEOUT_OFF (0XC<<4)
#define PWRDOWN_ON (0XE<<4)
#define PWRDOWN_OFF (0XF<<4)
#define DISABLE_TX (0X2<<2)
#define ENABLE_TX (0X1<<2)
#define DISABLE_RX (0X2)
#define ENABLE_RX (0X1)
//baud rate set,all in normal mode,ACR[7]=0
#define BUD1200 (0X66)
#define BUD9600 (0XBB)
#define BUD38400 (0XCC)
#define BUD1XA (0XFF)
#define BUD1XB (0XEE)
//IMR signal
#define INPORT_CHANGE (0X1<<7)
#define DELTA_BREAKB (0X1<<6)
#define RX_FFULLB (0X1<<5)
#define TX_RDYB (0X1<<4)
#define CNT_RDY (0X1<<3)
#define DELTA_BREAKA (0X1<<2)
#define RX_FFULLA (0X1<<1)
#define TX_RDYA (0X1)
//int vector
#define CS1_INT_VECTOR (0X0+8)
#define CS2_INT_VECTOR (0X1+8)
//mr0
#define ENABLE_UWTD (0X1<<7)
#define FIFO_SIZE16B (0X1<<3)
//isr status
#define IN_PORT_CHG (0X1<<7)
#define DEL_BRK_B (0X1<<6)
#define RX_FFULL_B (0X1<<5)
#define TX_RDY_B (0X1<<4)
#define CNT_RDY (0X1<<3)
#define DEL_BRK_A (0X1<<2)
#define RX_FFULL_A (0X1<<1)
#define TX_RDY_A (0X1)
//發(fā)送和接收的底層操作函數(shù)
#define COM16_TXFIFO_FULL() (!(rSRA_C1&0x4))
#define COM16_SEND_DATA(c) (rTXFIFOA_C1 = (c))
#define COM16_RXFIFO_EMPTY() (!(rSRA_C1&0x1))
#define COM16_FIFO_RXDATA() (rRXFIFOA_C1)
//HISR的優(yōu)先級(jí)
#define CS1_HISR_PRI (2)
#define CS2_HISR_PRI (2)
//com device status
#define DEV_ALREADY_OPEN (0X200)
#define DEV_NOT_EXIST (0X201)
#define DEV_ERR_MALLCOMEM (0X202)
//
#define XCOM_FIRST_OPER 0x100
#define XCOM_READ_STATE 0x101 //讀狀態(tài)
#define XCOM_WRITE_COMMD 0x102 //寫(xiě)命令
#define XCOM_READ_DATA 0x103 //讀數(shù)據(jù)
#define XCOM_WRITE_DATA 0x104 //寫(xiě)數(shù)據(jù)
#define XCOM_ENABLE_COM 0x105 //使串口有效
#define XCOM_DISABLE_COM 0x106 //使串口無(wú)效
#define XCOM_LAST_OPER 0x110
//事件標(biāo)志
#define COM16_TX_EVENT 0X1
#define COM16_RX_EVENT 0X2
//=======================================================================================
//隊(duì)列處理
//COM16隊(duì)列
#define COM16_DATA_IN_TXQ() ( ( (COM16_TXQ_SIZE) + (com16_send_wp) - (com16_send_rp) ) % (COM16_TXQ_SIZE) )
#define COM16_TXQ_FULL() ( ( (com16_send_wp+1) % (COM16_TXQ_SIZE) ) == com16_send_rp )
#define COM16_TXQ_ENQ( c ) \
{ \
(pCOM16TX[com16_send_wp]) = (c); \
(com16_send_wp) = ( com16_send_wp +1 ) % (COM16_TXQ_SIZE); \
}
#define COM16_TXQ_DEQ( c ) \
{ \
(c) = (pCOM16TX[com16_send_rp]); \
(com16_send_rp) = ( com16_send_rp + 1 ) % (COM16_TXQ_SIZE); \
}
#define COM16_TXQ_EMPTY( ) ((com16_send_wp)==(com16_send_rp))
#define COM16_DATA_IN_RXQ( ) ( ( (COM16_RXQ_SIZE) + (com16_recv_wp) - (com16_recv_rp) ) % (COM16_RXQ_SIZE) )
#define COM16_RXQ_DEQ( c ) \
{ \
(c) = (pCOM16RX[(com16_recv_rp)]); \
(com16_recv_rp) = ( (com16_recv_rp) + 1 ) % (COM16_RXQ_SIZE); \
}
#define COM16_RXQ_EMPTY() ( (com16_recv_rp) == (com16_recv_wp) )
#define COM16_RXQ_ENQ( c ) \
{ \
(pCOM16RX[(com16_recv_wp)]) = (c); \
(com16_recv_wp) = ( (com16_recv_wp) + 1 ) % (COM16_RXQ_SIZE); \
}
#define COM16_RXQ_FULL(driver) ( ( ((com16_recv_wp)+1) % (COM16_RXQ_SIZE) ) == (com16_recv_rp) )
#define FIQ_CTRL_SET() (rGPHDAT |= 0X10)
#define FIQ_CTRL_CLR() (rGPHDAT &= 0X7EF)
extern unsigned char cC1IMSK;
//fuction
void SCL_Init(void);
void CS1_EN_INT(void);
void * UART_OpenDev(char *szComNo, unsigned long dwBaudRate, unsigned long dwMode,
unsigned long dwRecvBufeSize, unsigned long dwSendBufSize);
// 結(jié)束 C 定義
#ifdef __cplusplus
}
#endif
#endif
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -