#ifndef _API_RT_UART_H_ #define _API_RT_UART_H_ #include #include "api_rt_common.h" #include "gd32f30x.h" #include "api_uart.h" #define UART_BUFFER_LENGTH 64 typedef struct { uint32_t UartBase; // uint32_t TxDmaChannelBase; uint32_t DmaBase; dma_channel_enum DmaChannelBase; ApiUart_Status Status; uint8_t *RxBuffer; uint16_t RxBufferHead; uint16_t RxBufferTail; uint8_t *TxBuffer; uint16_t TxBufferCount; void (*AsyncWriteCompleteCallback)(); void (*AsyncWriteErrorCallback)(); void (*AsyncReadCompleteCallback)(uint8_t *data, int16_t count); void (*AsyncReadErrorCallback)(); int16_t AsyncReadCount; uint8_t *AsyncReadAddr; } ApiRtUart_Handle; extern ApiRtUart_Handle Uarts[1]; void iRtUart_Init(); void iRtUart_RxIsr(uint8_t devIndex); void iRtUart_AsyncWriteCompleteIsr(uint8_t devIndex); void iRtUart_AsyncWriteErrorIsr(uint8_t devIndex); #endif