/* * uart_dev.h * * Created on: 2024年6月22日 * Author: psx */ #ifndef APP_INC_UART_DEV_H_ #define APP_INC_UART_DEV_H_ #include "ch32v30x.h" #include #include #include "RingQueue/ring_queue.h" #define ASCII_CHAR_BACKSPACE 0x08 /* '\b' */ #define ASCII_CHAR_CHARACTER_TABULATION 0x09 /* '\t' */ #define ASCII_CHAR_LINE_FEED 0x0A /* '\n' */ #define ASCII_CHAR_LINE_TABULATION 0x0B /* '\v' */ #define ASCII_CHAR_FORM_FEED 0x0C /* '\f' */ #define ASCII_CHAR_CARRIAGE_RETURN 0x0D /* '\r' */ //#define RS485_MAX_PACK_DATA_LEN 30 typedef uint32_t device_handle; extern device_handle g_J1RS485_UART6_handle; extern device_handle g_J2RS485_UART7_handle; extern device_handle g_J3RS485_USART2_handle; extern device_handle g_J4RS485_UART8_handle; extern device_handle g_J50RS485_USART3_handle; extern device_handle g_LORA_UART4_handle; extern device_handle g_Upward_UART5_handle; /* * 串口连接对应的连接的设备 * ONLYONE表示唯一 * 串口3,会分时复用,采用如下的方式确定在与谁通信 */ typedef enum{ ONLYONE = 1, J0RS485 = 0, J5RS485 = 5, J6RS485 = 6, J7RS485 = 7, J8RS485 = 8, J9RS485 = 9, }uartNum_e; /* UART 驱动数据结构,对应一个uart设备 */ typedef struct _uart_device_info{ uint8_t init; /* 设备是否初始化 */ USART_TypeDef *uart_index; /* 对应的硬件串口 */ uint32_t uart_baudrate; /* 波特率 */ RingQueue uart_ring_queue; /* 缓冲区 */ uartNum_e uart_num; /* 对应输出的设备 */ }uart_device_info; //device_handle uart_dev_init(uartIndex_e uart_index, uint8_t *buff, int buff_size); //device_handle uart_dev_init(uart_device_info *uart_device, uint8_t *buff, int buff_size); //device_handle uart_dev_init(void); uint8_t uart_all_dev_init(void); void uart_sendstr(device_handle device,char *str); void uart_dev_write(device_handle device, void *data, int len); int uart_dev_char_present(device_handle device); char uart_dev_in_char(device_handle device); int ring_queue_dev_char_present(RingQueue *ring_queue); char ring_queue_dev_in_char(RingQueue *ring_queue); int ring_queue_length(device_handle device); #endif /* APP_INC_UART_DEV_H_ */