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

📄 uart.h

📁 4510简单例子程序(转载)
💻 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 + -