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

📄 uart.h

📁 一个单片机实现以太网通信的程序
💻 H
字号:
#ifndef	__UART_H__
#define	__UART_H__

#include "lwipopts.h"
#include "hardware.h"
//	write your header here
//parity check mode
#define      NO_PARITY             0
#define      ODD_PARITY            1
#define      EVEN_PARITY           2

//serial transmitting flag
#define      NOT_TRANSMITTING      0
#define      IS_TRANSMITTING       1

//result of sending data 
#define      SEND_SUCCESS          0
#define      SEND_FAILURE          (-1)


//serial receive and send buffer size
//#define   	 S_RECV_BUF_SIZE   	   100
//#define      S_SEND_BUF_SIZE       100
//	write your header here

/*************************************************************************/
/*                                                                       */
/* FILE NAME                                      VERSION                */
/*                                                                       */
/*      uart1.h                  KS32C5000(A)/50100 SNDS100 Rev. 1.0      */
/*                                                                       */
/* COMPONENT                                                             */
/*                                                                       */
/*                                                                       */
/*                                                                       */
/* DESCRIPTION                                                           */
/*                                                                       */
/*                                                                       */
/* AUTHOR                                                                */
/*                                                                       */
/*      Young Sun KIM, Samsung Electronics, Inc.                         */
/*                                                                       */
/* DATA STRUCTURES                                                       */
/*                                                                       */
/*                                                                       */
/* FUNCTIONS                                                             */
/*                                                                       */
/*                                                                       */
/* DEPENDENCIES                                                          */
/*                                                                       */
/*                                                                       */
/* HISTORY                                                               */
/*                                                                       */
/*         NAME            DATE                    REMARKS               */
/*                                                                       */
/*         in4maker     09-25-1998      Created initial version 1.0      */
/*         in4maker     05-31-1999      All uart functions are modified. */
/*                                                                       */
/*************************************************************************/

//#include "std.h"

/***********************************************************
 *	SYMBOL DEFINITIONS                                 *
 ***********************************************************/
#define NL          0x0A
#define CR          0x0D
#define BSP         0x08
#define ESC         0x1B
#define CTRLZ       0x1A
#define RUBOUT      0x7F
#define LTRUE       0xFF
#define FALSE       0
//#define NULL        0
#define DEFAULT     -1
#define DEFAULT_P   6      /* default precision */
#define CLOSED  0
#define OPENED  1

#define BAUDRATE 38400

#define PUartCmd1  *((volatile char *)P_UART_Command1)
#define PUartCmd2  *((volatile char *)P_UART_Command2)
#define PUartData  *((volatile u16_t *)P_UART_Data)
#define PUartBaudL *((volatile char *)P_UART_BaudScalarLow)
#define PUartBaudH *((volatile char *)P_UART_BaudScalarHigh)
#define PIOBAttr  *((volatile u16_t *)P_IOB_Attrib)
#define PIOBDir   *((volatile u16_t *)P_IOB_Dir)
#define PIOBData  *((volatile u16_t *)P_IOB_Data)
#define PIOAAttr  *((volatile u16_t *)P_IOA_Attrib)
#define PIOADir   *((volatile u16_t *)P_IOA_Dir)
#define PIOAData  *((volatile u16_t *)P_IOA_Data)



/***********************************************************
 *	SET SERIAL DEVICE PARAMETER                        *
 ***********************************************************/
//#define NUM_OF_SERIAL_DEV  2      /* Number of serial device */
//#define SERIAL_DEV0  0            
//#define SERIAL_DEV1  1
//#define CONSOLE      SERIAL_DEV0  /* default console channel */

/* Can be used in interrupt mode */
#define sputs(s)     i_puts(s)
//extern void (sputs)(char[] /*s*/);

/* Can be used in polling mode */
#define put_byte(ch) put_char(ch)
//extern void (put_byte)(char /*ch*/);

#define get_byte()   get_char()
//extern char (get_byte)(void);

/***********************************************************
 *	REDEFINE C-TYPE HEADER                             *
 ***********************************************************/
#define is_digit(x)     ((x >= '0' && x <= '9') ? 1:0)
#define is_lowercase(x) ((x >= 'a' && x <= 'z') ? 1:0)
#define is_xdigit(x)    ((is_digit(x) || (x >= 'A' && x <= 'F'))? 1:0)
#define to_upper(x)     ((is_lowercase(x)) ? x - 'a' + 'A': x)
#define is_space(x)     (((x==' ')||(x==0x0D)) ? 1:0)
#define is_control(x)   ((x > 0 && x < 32) ? 1:0)

/***********************************************************
 *	LINE CONTROL REGISTER BIT DEFINITIONS              *
 ***********************************************************/

/* bit 2-3 : Parity mode */
#define	ULCON_PMD_NO            0x00  /* no parity */
#define	ULCON_PMD_ODD           0x02  /* odd parity */
#define	ULCON_PMD_EVEN          0x06  /* even parity */

/* bit 6 : Serial Clock Selection */
#define  UCON_TXM_INT             (1<<6)  

/* bit 7 : Infra-red mode */
#define  UCON_RXM_INT             (1<<7)  



/***********************************************************
 *       CONTROL REGISTER BIT DEFINITIONS                  *
 ***********************************************************/

/* bit 6 : Send Break */
#define	UCON_SEND         (1<<6)   /* Send Control & Status */

/* bit 7 : Loop-back enable */
#define	UCON_RECEIVE           0x80   /* Recieve Control & Status */


/***********************************************************
 *	Status Register Bit Definitions                    *
 ***********************************************************/

/* bit 5 : Frame error */
#define	USTAT_FRAME      (1<<5)   /* Recieve Control & Status */

/* bit 4 : Frame error */
#define	USTAT_OVERRUN           (1<<4)   /* overrun error */

/*bit  3: Parity error*/
#define	USTAT_PARITY            (1<<3)   /* parity error */



#define	USTAT_ERROR	    (USTAT_OVERRUN|USTAT_PARITY|USTAT_FRAME)


/***********************************************/
/*          UART MACRO FUNCTIONS               */
/***********************************************/

/* Used In Polling Mode */
// Waiting for Xmitter Empty 
#define	WaitXmitter()						\
	while(!(PUartCmd2 & UCON_SEND))

#define UARTTxComplete()  1//while(!(PUartCmd2 & UCON_SEND))

#define U_TX_COMPLETE()  1//(PUartCmd2 & UCON_SEND)

//#define U_BUFF_EMPTY()  (c? (UARTSTAT1 & USTAT_TXB_EMPTY): \
 //                                 (UARTSTAT0 & USTAT_TXB_EMPTY))
        

// Waiting for Receive Data 
#define	WaitRcver()						\
	while(!(PUartCmd2 & UCON_RECEIVE))

/***********************************************************
 *            UART DATA STRUCTURES                         *
 ***********************************************************/
#define ERROR           0
#define SUCCESS         1

/* Transmit & Receive Que data structure */

/* Define UART initialize structure */

typedef struct SERIAL_INIT_STRUCT
{
    u32_t baud_rate;              /* default is defined at sysconf.h*/
    u32_t data_mode;              /* interrupt or poll mode */
    u8_t parity;                 /* default no parity */
    u8_t state;
//    UART_BUFFER *uRxBuf;
//    UART_BUFFER *uTxBuf;

} SERIAL_DEV;


#define BAUD_TABLE     9         /* No of baud rate table */

typedef struct 
{
     u32_t baud;
     u16_t  divH;
     u16_t divL;
}BaudTable;


u16_t  UART_Init(SERIAL_DEV *s) ;

void TxQInit(void);

void RxQInit(void);

void UARTTxIntOff(void);

void UARTTxIntOn(void);

void UARTRxIntOff(void);

void UARTRxIntOn(void);

u16_t BaudRateVal(u32_t  baud);

u16_t BaudRateVal(u32_t  baud);

void UartErr(void);


u16_t getbyte(u16_t *data, u16_t offset);
void putbyte(u16_t *data, u8_t ch, u16_t offset);
void mycharpack(u16_t *data, char * s);


#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -