#ifndef _UART_H_ #define _UART_H_ #include "gd32f10x.h" #include #include #include "timeout.h" extern uint8_t g_bPrintDebug; extern void usart0_config(void); extern void data_dump(const char *name, uint8_t *data, uint16_t length); #define U1_RX_SIZE 2048 #define U1_RX_MAX 600 #define NUM 10 #define USART1_TX_SIZE 640 typedef struct { uint8_t *start; uint8_t *end; }UCB_URxBuffptr; typedef struct { uint16_t URxCounter; //统计接收数据量 UCB_URxBuffptr URxDataPtr[NUM]; UCB_URxBuffptr *URxDataIN; UCB_URxBuffptr *URxDataOUT; UCB_URxBuffptr *URxDataEND; }UCB_CB; typedef struct _uart_info_{ uint8_t txfifo[640]; uint8_t waitMsg[16]; // 等待接收的字符串 uint8_t cmd; uint8_t bSdFinish; // 发送完成 }uartInfo_t; extern uartInfo_t g_uart1Info; extern uint8_t U1_RxBuff[U1_RX_SIZE]; extern UCB_CB U1CB; extern void dma_init_uart_4G(void); extern void usart_4G_dma_init(void); extern void dma_config_rx_mode_update(void); #define USART3_TX_SIZE 256 #define USART3_RX_SIZE 256 extern uint8_t usart485TX_Buffer[USART3_TX_SIZE]; extern uint8_t usart485RX_Buffer[USART3_RX_SIZE]; typedef struct _uart_485_info_{ uint8_t bSdFinish; // uint8_t bRcv; timeout_t time; // 发送的时候启动 收到数据时结束 }__attribute__((packed))uart485Info_t; extern uart485Info_t g_uart485; extern void dam_init_uart_485(void); extern void usart_485_dma_init(void); extern void usart_tx_dma_send(uint32_t usart_periph,uint8_t* data_buffer,uint16_t length); #endif