📄 uart.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 + -