K74B/87400/drivers/hal/inc/uart_device.h

106 lines
1.6 KiB
C
Raw Normal View History

2024-01-25 14:22:18 +08:00
#ifndef UART_DEVICE_H__
#define UART_DEVICE_H__
#include <stdint.h>
#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