📄 uart.h
字号:
/*register define*/
#ifndef __INC_UART_H
#define __INC_UART_H
#include "typDef.h"
#include "s3c4510b.h"
#define ARM_BAUD_MIN 1200
#define ARM_BAUD_MAX 460860
#define ARM_DEFAULT_BAUD 38400
/* Bit definitions within ULCON0/1 Line Control Register*/
#define PARITY_NONE 0x00 /* Set No Parity*/
#define PARITY_ODD 0x20 /* Set Odd Parity*/
#define PARITY_EVEN 0x28 /* Set Even Parity*/
#define ONE_STOP 0x00 /* One Stop Bit*/
#define WORD_LEN 0x03 /* Set Word Length 8*/
#define INT_CLK 0x00 /* Internal Clock Mode */
#define EXT_CLK 0x40 /* External Clock Mode */
/* Bit definitions within UCON0/1 Control Register*/
#define UCON_RX 0x01 /* Receive Mode -Interrupt*/
#define UCON_STAT_EN 0x04 /* Status Interrrupt -Enable*/
#define UCON_TX 0x08 /* Transmit Mode-Interrupt*/
#define UCON_TX_DIS 0x01 /* Transmit Interrupt -Disable*/
#define UCON_DSR 0x20 /* Data Set Ready -Enable*/
#define UCON_BREAK 0x40 /* Set Break*/
#define UCON_RX_TX_RESET 0xe4 /* Rx and Tx Reset */
/* Bit definitions within USTAT0/1 Status Register*/
#define USTAT_DTR_LOW 0x10 /* DTR Enable */
#define USTAT_DTR_HIGH 0x00 /* DTR Disable*/
#define USTAT_TX_READY 0x40 /* Transmitter Ready for another char */
#define USTAT_RX_AVAIL 0x20 /* Character has arrived*/
#define USTAT_OVER_ERR 0x01 /* Over Run Error*/
#define USTAT_PAR_ERR 0x02 /* Parity Error*/
#define USTAT_FRAME_ERR 0x04 /* Frame Error*/
#define USTAT_RX_READY 0x20 /* Receive Data Buffer*/
/* UART Baud Rate Divisor Time Constant Value when clock source is internal MCLK2 25MHz */
#define ARM_CNT_1200 (1301<<4) /* Baud_Rate 1200*/
#define ARM_CNT_2400 (650<<4) /* Baud_Rate 2400*/
#define ARM_CNT_4800 (324<<4) /* Baud_Rate 4800*/
#define ARM_CNT_9600 (162<<4) /* Baud_Rate 9600*/
#define ARM_CNT_19200 (80<<4) /* Baud_Rate 19200*/
#define ARM_CNT_38400 (40<<4) /* Baud_Rate 38400*/
#define ARM_CNT_57600 (26<<4) /* Baud_Rate 57600*/
#define ARM_CNT_115200 (13<<4) /* Baud_Rate 115200*/
#define ARM_CNT_230400 (6<<4) /* Baud_Rate 230400*/
#define ARM_CNT_460800 (2<<4) /* Baud_Rate 460800*/
#define ARM_CNT1_VAL 0x00 /* Baud Rate Divisor Value*/
#define GET_BAUDRATE 0x01
#define SET_BAUDRATE 0x02
#define ULCON0 (ASIC_BASE+0xD000)
#define ULCON1 (ASIC_BASE+0xE000)
#define UCON0 (ASIC_BASE+0xD004)
#define UCON1 (ASIC_BASE+0xE004)
#define USTAT0 (ASIC_BASE+0xD008)
#define USTAT1 (ASIC_BASE+0xE008)
#define UTXBUF0 (ASIC_BASE+0xD00C)
#define UTXBUF1 (ASIC_BASE+0xE00C)
#define URXBUF0 (ASIC_BASE+0xD010)
#define URXBUF1 (ASIC_BASE+0xE010)
#define UBRDIV0 (ASIC_BASE+0xD014)
#define UBRDIV1 (ASIC_BASE+0xE014)
#define BRDCNT0 (ASIC_BASE+0xD018)
#define BRDCNT1 (ASIC_BASE+0xE018)
#define BRDCLK0 (ASIC_BASE+0xD01C)
#define BRDCLK1 (ASIC_BASE+0xE01C)
#define UART_IRQ_MODE 0
#define UART_POLL_MODE 1
/* typedefs */
typedef struct
{
/* register addresses */
volatile UINT32 *lineCtrReg; /* UART line control register */
volatile UINT32 *chanCtrReg; /* UART control register */
volatile UINT32 *statusReg; /* UART status register*/
volatile UINT32 *sendBufReg; /* UART transmit buffer register*/
volatile UINT32 *recvBufReg; /* UART receive buffer register */
volatile UINT32 *baudDivReg; /* UART baud rate divisor register*/
volatile UINT32 *baudCountReg; /* UART0 baud rate count register */
volatile UINT32 *baudMonReg; /*UART0 baud rate clock monitor*/
int channel;
// channel=0;
BOOL opened;
int workMode; /* current mode (interrupt or poll) */
int baudFreq; /* input clock frequency */
int options; /* Hardware options */
}UART_DEV;
#endif //__INC_UART_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -