#ifndef UART_DEVICE_H__ #define UART_DEVICE_H__ #include #define TX_MAX_FIFO_SIZE (8U) #define RX_MAX_FIFO_SIZE (32U) #define TX_BUFF_SIZE_POS (7U) #define TX_BUFF_SIZE (1U << TX_BUFF_SIZE_POS) #define RX_BUFF_SIZE RX_MAX_FIFO_SIZE #define RX_FIFO_INT_SIZE (RX_MAX_FIFO_SIZE/2) #define TX_FIFO_INT_SIZE (1U) #define BAUDRATE_OSR_16MHZ_HIGH_SPEED (16U) #define BAUDRATE_OSR_16MHZ (14U) #define BAUDRATE_OSR_8MHZ (14U) #define BAUDRATE_OSR_4MHZ (13U) #define BAUDRATE_OSR_2MHZ (13U) //typedef enum{ // BAUDRATE_9600 = 9600U, // BAUDRATE_19200 = 19200U, // BAUDRATE_38400 = 38400U, // BAUDRATE_57600 = 57600U, // BAUDRATE_115200 = 115200U, // BAUDRATE_250000 = 250000U, // BAUDRATE_500000 = 500000U, // BAUDRATE_1000000 = 1000000U, //}Baudrate_t; typedef enum{ BITSIZE_7BITS = 2U, BITSIZE_8BITS = 3U, }BitSize_t; /*!< Parity: 00: NONE, 01: ODD, 11: EVEN */ typedef enum{ PARITY_NONE = 0U, PARITY_ODD = 1U, PARITY_EVEN = 3U, }Parity_t; typedef enum{ STOPS_1BITS = 0U, STOPS_2BITS, }StopBits_t; #define RX_DATA_SIZE (128U) #define VALID_RX_PACKAGE_SIZE (81U) typedef void (*uartRx_cb_func_t)(uint8_t* buff, uint8_t length); typedef void (*uartTx_cb_func_t)(void); int8_t UART_Init(uint32_t baudRate, BitSize_t bitSize, Parity_t parity,StopBits_t stopBits); void UART_RegisterIRQ(uartRx_cb_func_t rxDowncallback); void UART_UnRegisterIRQ(void); int8_t UART_SendBuff(uint8_t *buff, uint16_t length); uint8_t UART_ReadByte(void); #endif