uart.h

来自「WinCE 3.0 BSP, 包含Inter SA1110, Intel_815」· C头文件 代码 · 共 204 行

H
204
字号
/*++
THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
PARTICULAR PURPOSE.
Copyright (c) 1995-1998  Microsoft Corporation

Module Name:

   uart.h

Abstract:

    header file for uart functions

Notes:


--*/


#ifndef _UART_H_
#define _UART_H_

//
// Define serial port registers offset
//

#define RECEIVE_BUFFER      0x0     /* R DLAB=0 */
#define TRANSMIT_BUFFER     0x0     /* W DLAB=0 */
#define DIVISOR_LSB         0x0     /* R/W DLAB=1 */
#define INTERRUPT_ENABLE    0x1     /* R/W DLAB=0 */
#define DIVISOR_MSB         0x1     /* R/W DLAB=1 */
#define INTERRUPT_ID        0x2     /* R */
#define FIFO_CONTROL        0x2     /* W */
#define LINE_CONTROL        0x3     /* R/W */
#define MODEM_CONTROL       0x4     /* R/W */
#define LINE_STATUS         0x5     /* R/W */
#define MODEM_STATUS        0x6     /* R/W */
#define SCRATCH_PAD         0x7     /* R/W */

/*
** Define serial port interrupt enable register structure.
*/

typedef union _SP_INTERRUPT_ENABLE {
    struct {
        UCHAR ReceiveEnable : 1;
        UCHAR TransmitEnable : 1;
        UCHAR LineStatusEnable : 1;
        UCHAR ModemStatusEnable : 1;
        UCHAR Reserved1 : 4;
    };
    UCHAR Reg;
} SP_INTERRUPT_ENABLE, *PSP_INTERRUPT_ENABLE;

/*
** Define serial port interrupt id register structure.
*/

typedef union _SP_INTERRUPT_ID {
    struct {
        UCHAR InterruptPending : 1;
        UCHAR Identification : 3;
        UCHAR Reserved1 : 2;
        UCHAR FifoEnabled : 2;
    };
    UCHAR Reg;
} SP_INTERRUPT_ID, *PSP_INTERRUPT_ID;

/*
** Define serial port fifo control register structure.
*/

typedef union _SP_FIFO_CONTROL {
    struct {
        UCHAR FifoEnable : 1;
        UCHAR ReceiveFifoReset : 1;
        UCHAR TransmitFifoReset : 1;
        UCHAR DmaModeSelect : 1;
        UCHAR Reserved1 : 2;
        UCHAR ReceiveFifoLevel : 2;
    };
    UCHAR Reg;
} SP_FIFO_CONTROL, *PSP_FIFO_CONTROL;

/*
** Define serial port line control register structure.
*/

typedef union _SP_LINE_CONTROL {
    struct {
        UCHAR CharacterSize : 2;
        UCHAR StopBits : 1;
        UCHAR ParityEnable : 1;
        UCHAR EvenParity : 1;
        UCHAR StickParity : 1;
        UCHAR SetBreak : 1;
        UCHAR DivisorLatch : 1;
    };
    UCHAR Reg;
} SP_LINE_CONTROL, *PSP_LINE_CONTROL;

/*
** Define serial port modem control register structure.
*/

typedef union _SP_MODEM_CONTROL {
    struct {
        UCHAR DataTerminalReady : 1;
        UCHAR RequestToSend : 1;
        UCHAR Reserved1 : 1;
        UCHAR Interrupt : 1;
        UCHAR loopBack : 1;
        UCHAR Reserved2 : 3;
    };
    UCHAR Reg;
} SP_MODEM_CONTROL, *PSP_MODEM_CONTROL;

/*
** Define serial port line status register structure.
*/

typedef union _SP_LINE_STATUS {
    struct {
        UCHAR DataReady : 1;
        UCHAR OverrunError : 1;
        UCHAR ParityError : 1;
        UCHAR FramingError : 1;
        UCHAR BreakIndicator : 1;
        UCHAR TransmitHoldingEmpty : 1;
        UCHAR TransmitEmpty : 1;
        UCHAR ReceiveFifoError : 1;
    };
    UCHAR Reg;
} SP_LINE_STATUS, *PSP_LINE_STATUS;

/*
** Define serial port modem status register structure.
*/

typedef union _SP_MODEM_STATUS {
    struct {
        UCHAR DeltaClearToSend : 1;
        UCHAR DeltaDataSetReady : 1;
        UCHAR TrailingRingIndicator : 1;
        UCHAR DeltaReceiveDetect : 1;
        UCHAR ClearToSend : 1;
        UCHAR DataSetReady : 1;
        UCHAR RingIndicator : 1;
        UCHAR ReceiveDetect : 1;
    };
    UCHAR Reg;
} SP_MODEM_STATUS, *PSP_MODEM_STATUS;

//
// define parallel port register offsets
//

#define PARALLEL_DATA    0x0
#define PARALLEL_STATUS  0x1
#define PARALLEL_CONTROL 0x2

/*
** Define parallel status register structure.
*/

typedef union _PP_STATUS {
   struct {
      UCHAR Timeout : 1;             /* EPP Mode only */
      UCHAR : 1;
      UCHAR InterruptPending_N : 1;
      UCHAR Error_N : 1;
      UCHAR PrinterSelected : 1;
      UCHAR PaperEnd : 1;
      UCHAR Acknowledge_N : 1;
      UCHAR Busy_N : 1;
   };
   UCHAR Reg;
} PP_STATUS, *PPP_STATUS;

/*
** Define parallel control register structure.
*/

typedef union _PP_CONTROL {
   struct {
      UCHAR Strobe : 1;
      UCHAR AutoFeed: 1;
      UCHAR InitiateOutput : 1;
      UCHAR PrinterSelectInput : 1;
      UCHAR InterruptRequestEnable : 1;
      UCHAR ControlDirection : 1;
      UCHAR : 2;
   };
   UCHAR Reg;
} PP_CONTROL, *PPP_CONTROL;

#define PP_CONTROL_STROBE     0x01
#define PP_CONTROL_AUTOFEED   0x02
#define PP_CONTROL_CONTROLDIR 0x20

#endif /* _UART_H_ */

⌨️ 快捷键说明

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