#ifndef FM_UART_DEV_H_ #define FM_UART_DEV_H_ #include "ch32v30x.h" #include "HD_UART.h" #include "comm_types.h" #include "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' */ typedef enum{ J01_485_INDEX = 0, J23_485_INDEX = 1, J45_485_INDEX = 2, J67_485_INDEX = 3, J8_485_INDEX = 4, J9_485_INDEX = 5, Lora_UART_INDEX = 6, Su806_UART_INDEX = 7, MCU_UART_INDEX = 8, }uartIndex_e; typedef struct _uartSendInfo { uint8_t *data; //指向数据 uint16_t count; //已经发送数据字节个数 uint16_t len; //数据长度 } uartSendInfo; /* UART 驱动数据结构,对应一个uart设备 */ typedef struct _uart_device_info{ uint8_t init; uartIndex_e uart_index; uint32_t uart_baudrate; RingQueue uart_ring_queue; uartSendInfo uart_send_data; } uart_device_info; typedef uint32_t device_handle; extern device_handle g_J0_handle; extern device_handle g_J1_handle; extern device_handle g_J2_handle; extern device_handle g_J3_handle; extern device_handle g_J4_handle; extern device_handle g_J5_handle; extern device_handle g_J6_handle; extern device_handle g_J7_handle; extern device_handle g_J8_handle; extern device_handle g_J9_handle; extern device_handle g_Mcu_handle; extern device_handle g_Su806_handle; extern device_handle g_Lora_handle; uint8_t uart_dev_in_char(device_handle device); int uart_dev_char_present(device_handle device); void HostMcu_uartBuf_Init(int32_t rs485BufLen, int32_t loraBufLen, int32_t mcuBufLen, int32_t su806BufLen); void SlaveMcu_uartBuf_Init(int32_t rs485BufLen, int32_t mcuBufLen); void Init_J0_485(uint32_t baud); void Init_J1_485(uint32_t baud); void Init_J2_485(uint32_t baud); void Init_J3_485(uint32_t baud); void Init_J4_485(uint32_t baud); void Init_J5_485(uint32_t baud); void Init_J6_485(uint32_t baud); void Init_J7_485(uint32_t baud); void Init_J8_485(uint32_t baud); void Init_J9_485(uint32_t baud); void Init_Mcu_Uart(uint32_t baud); void Init_Su806_Uart(uint32_t baud); void Init_Lora_Uart(uint32_t baud); void uartIT_Init(void); void J0_Interrupt(); void J1_Interrupt(); void J2_Interrupt(); void J3_Interrupt(); void J4_Interrupt(); void J5_Interrupt(); void J6_Interrupt(); void J7_Interrupt(); void J8_Interrupt(); void J9_Interrupt(); // void Host_Interrupt(); // void Slave_Interrupt(); void Mcu_Interrupt(); void Su806_Interrupt(); void Lora_Interrupt(); /* 0为主mcu,非0为从mcu */ extern uint8_t getMCU(void); uint8_t getUartSendState(device_handle device); extern void J0_485_IN_TXE(void); extern void J1_485_IN_TXE(void); extern void J2_485_IN_TXE(void); extern void J3_485_IN_TXE(void); extern void J4_485_IN_TXE(void); extern void J5_485_IN_TXE(void); extern void J6_485_IN_TXE(void); extern void J7_485_IN_TXE(void); extern void J8_485_IN_TXE(void); extern void J9_485_IN_TXE(void); extern void Lora_uart_IN_TXE(void); // extern void Mcu_uart_IN_TXE(void); extern void hostMcu_uart_IN_TXE(void); extern void slaveMcu_uart_IN_TXE(void); extern void Su806_uart_IN_TXE(void); extern void J0_485_IN_IDLE(void); extern void J1_485_IN_IDLE(void); extern void J2_485_IN_IDLE(void); extern void J3_485_IN_IDLE(void); extern void J4_485_IN_IDLE(void); extern void J5_485_IN_IDLE(void); extern void J6_485_IN_IDLE(void); extern void J7_485_IN_IDLE(void); extern void J8_485_IN_IDLE(void); extern void J9_485_IN_IDLE(void); extern void J0_485_IN_RXNE(void); extern void J1_485_IN_RXNE(void); extern void J2_485_IN_RXNE(void); extern void J3_485_IN_RXNE(void); extern void J4_485_IN_RXNE(void); extern void J5_485_IN_RXNE(void); extern void J6_485_IN_RXNE(void); extern void J7_485_IN_RXNE(void); extern void J8_485_IN_RXNE(void); extern void J9_485_IN_RXNE(void); #endif