📄 hal_uart.h
字号:
//---------------------------------------------------------------------------// Serial URAT registers (Noah-C2 specifies a 16550-compatible uart interface// Controller bases in the ARCA2#include "plf_intr.h"#define UART1_BASE 0xE0000600#define UART2_BASE 0xE0000700#define UART_16550_RDR 0x00#define UART_16550_TDR 0x00#define UART_16550_DLLR 0x00#define UART_16550_DLHR 0x04#define UART_16550_IER 0x04#define UART_16550_ISR 0x08#define UART_16550_FCR 0x08#define UART_16550_LCR 0x0C#define UART_16550_MCR 0x10#define UART_16550_LSR 0x14#define UART_16550_MSR 0x18#define UART_16550_SPR 0x1C#define SLIRCR 0x20// LCR#define UART_16550_LCR_DLAB 0x80 /* Divisor latch access bit */#define UART_16550_LCR_SBC 0x40 /* Set break control */#define UART_16550_LCR_SPAR 0x20 /* Stick parity (?) */#define UART_16550_LCR_EPAR 0x10 /* Even parity select */#define UART_16550_LCR_PARITY 0x08 /* Parity Enable */#define UART_16550_LCR_STOP 0x04 /* Stop bits: 0=1 stop bit, 1= 2 stop bits */#define UART_16550_LCR_WLEN5 0x00 /* Wordlength: 5 bits */#define UART_16550_LCR_WLEN6 0x01 /* Wordlength: 6 bits */#define UART_16550_LCR_WLEN7 0x02 /* Wordlength: 7 bits */#define UART_16550_LCR_WLEN8 0x03 /* Wordlength: 8 bits */// LSR#define UART_16550_LSR_RFER 0x80 /* Transmitter empty */#define UART_16550_LSR_TEMT 0x40 /* Transmitter empty */#define UART_16550_LSR_THRE 0x20 /* Transmit-hold-register empty */#define UART_16550_LSR_BI 0x10 /* Break interrupt indicator */#define UART_16550_LSR_FE 0x08 /* Frame error indicator */#define UART_16550_LSR_PE 0x04 /* Parity error indicator */#define UART_16550_LSR_OE 0x02 /* Overrun error indicator */#define UART_16550_LSR_DR 0x01 /* Receiver data ready */// FCR#define UART_16550_FCR_DMS 0x08#define UART_16550_FCR_TFLS 0x04#define UART_16550_FCR_RFLS 0x02#define UART_16550_FCR_FE 0x01#define UART_16550_ENB UART_FCR_UUE#define UART_16550_FCR_ENABLE_FIFO 0x01 /* Enable the FIFO */#define UART_16550_FCR_CLEAR_RCVR 0x02 /* Clear the RCVR FIFO */#define UART_16550_FCR_CLEAR_XMIT 0x04 /* Clear the XMIT FIFO */#define UART_16550_FCR_DMA_SELECT 0x08 /* For DMA applications */#define UART_16550_FCR_UUE 0x10#define UART_16550_FCR_TRIGGER_MASK 0xC0 /* Mask for FIFO trigger range */#define UART_16550_FCR_TRIGGER_1 0x00 /* Mask for trigger set at 1 */#define UART_16550_FCR_TRIGGER_16 0x40 /* Mask for trigger set at 4 */#define UART_16550_FCR_TRIGGER_32 0x80 /* Mask for trigger set at 8 */#define UART_16550_FCR_TRIGGER_60 0xC0 /* Mask for trigger set at 14 */#define UART_16550_FCR6_R_TRIGGER_8 0x00 /* receive trigger set at 1 */#define UART_16550_FCR6_R_TRIGGER_16 0x40 /* receive trigger set at 4 */#define UART_16550_FCR6_R_TRIGGER_24 0x80 /* receive trigger set at 8 */#define UART_16550_FCR6_R_TRIGGER_28 0xC0 /* receive trigger set at 14 */#define UART_16550_FCR6_T_TRIGGER_16 0x00 /* transmit trigger set at 16 */#define UART_16550_FCR6_T_TRIGGER_8 0x10 /* transmit trigger set at 8 */#define UART_16550_FCR6_T_TRIGGER_24 0x20 /* transmit trigger set at 24 */#define UART_16550_FCR6_T_TRIGGER_30 0x30 /* transmit trigger set at 30 */// TI 16750 definitions#define UART_16550_FCR7_64BYTE 0x20 /* Go into 64 byte mode */#define UCOS_NUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD 38400#if !defined(__ASSEMBLY__)typedef struct { unsigned char* base; unsigned int msec_timeout; int isr_vector; int baud;} channel_data_t;static channel_data_t diag_channels[2] = { { (unsigned char*)UART1_BASE, 1000, UCOS_NUM_HAL_INTERRUPT_UART, UCOS_NUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD }, { (unsigned char*)UART2_BASE, 1000, UCOS_NUM_HAL_INTERRUPT_UART2, UCOS_NUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD },};void ucos_hal_plf_serial_putc(void *__ch_data, char c);void ucos_hal_plf_serial_init(void);#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -