📄 usb_cdc_uart.h
字号:
//-----------------------------------------------------------------------------
// USB_CDC_UART.h
//-----------------------------------------------------------------------------
#ifndef USB_CDC_UART_H
#define USB_CDC_UART_H
//-----------------------------------------------------------------------------
// Constant
//-----------------------------------------------------------------------------
// Line coding structure for Get/Set_Line_Coding
// 0-3 dwDTERate Data terminal rate (baudrate), in bits per second
// 4 bCharFormat Stop bits: 0 - 1 Stop bit, 1 - 1.5 Stop bits, 2 - 2 Stop bits
// 5 bParityType Parity: 0 - None, 1 - Odd, 2 - Even, 3 - Mark, 4 - Space
// 6 bDataBits Data bits: 5, 6, 7, 8, 16
typedef struct {
ULONG baudrate;
BYTE stopbit;
BYTE parity;
BYTE databit;
} TLine_Coding;
// bitmap for Set_Line_State()
#define CDC_DTR 0x01
#define CDC_RTS 0x02
// bitmap for Update_Line_State
#define CDC_DCD 0x01
#define CDC_DSR 0x02
#define CDC_BREAK 0x04 // break reception
#define CDC_RI 0x08
#define CDC_FRAME 0x10 // frame error
#define CDC_PARITY 0x20 // parity error
#define CDC_OVRRUN 0x40 // overrun error
#define CDC_CTS 0x80 // - CTS is not supported in generic CDC
//
// TX and RX buffers
//
// size of TX and RX ring buffer (must be greater than EP2_PACKET_SIZE)
#define TXBUFSIZE 0x100
#define RXBUFSIZE 0x100
// Memmory space allocation for TX and RX buffer
//#define TXBUF_IDATA
//#define TXBUF_PDATA
#define TXBUF_XDATA
//#define RXBUF_IDATA
//#define RXBUF_PDATA
#define RXBUF_XDATA
#if defined TXBUF_IDATA
typedef BYTE idata Ttxbuffer;
#define FIFO_READ_FUNC FIFO_Read_idata
#elif defined TXBUF_PDATA
typedef BYTE pdata Ttxbuffer;
#define FIFO_READ_FUNC FIFO_Read_pdata
#elif defined TXBUF_XDATA
typedef BYTE xdata Ttxbuffer;
#define FIFO_READ_FUNC FIFO_Read_xdata
#endif // TXBUF_IDATA
#if defined RXBUF_IDATA
typedef BYTE idata Trxbuffer;
#define FIFO_WRITE_FUNC FIFO_Write_idata
#elif defined RXBUF_PDATA
typedef BYTE pdata Trxbuffer;
#define FIFO_WRITE_FUNC FIFO_Write_pdata
#elif defined RXBUF_XDATA
typedef BYTE xdata Trxbuffer;
#define FIFO_WRITE_FUNC FIFO_Write_xdata
#endif // RXBUF_IDATA
// size allocation for TX and RX buffer
#if TXBUFSIZE >= 0x100
typedef UINT Ttxcnt;
#else
typedef BYTE Ttxcnt;
#endif
#if RXBUFSIZE >= 0x100
typedef UINT Trxcnt;
#else
typedef BYTE Trxcnt;
#endif
//-----------------------------------------------------------------------------
// Externs
//-----------------------------------------------------------------------------
extern bit cs_Line_State_Update; // update line state
extern volatile bit uart_DTR; // Line status output
extern volatile bit uart_RTS;
extern TLine_Coding idata uart_line_coding;
// TX and RX buffer variables
extern Ttxcnt TXcount; // number of data to transmit from UART
extern Trxcnt RXcount; // number of data to be recieved by host
extern bit TXReady; // TX buffer has data to transmit
extern bit RXReady; // RX buffer has room
//-----------------------------------------------------------------------------
// Prototypes
//-----------------------------------------------------------------------------
bit Set_Line_Coding( TLine_Coding idata * setting );
void Set_Line_State( BYTE st );
void Update_Line_State( BYTE st );
void Send_Break( UINT dur );
void Flush_COMbuffers( void );
BYTE COMGetByte( void );
void COMPutByte( BYTE dt );
void CDC_Handle_INT_IN( void );
void CDC_Handle_Bulk_IN( void );
void CDC_Handle_Bulk_IN_ZLP( void );
void CDC_Handle_Bulk_OUT( void );
#endif // USB_CDC_UART_H
//-----------------------------------------------------------------------------
// End Of File
//-----------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -