api_rt_uart.h 938 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #ifndef _API_RT_UART_H_
  2. #define _API_RT_UART_H_
  3. #include <stdint.h>
  4. #include "api_rt_common.h"
  5. #include "gd32f30x.h"
  6. #include "api_uart.h"
  7. #define UART_BUFFER_LENGTH 64
  8. typedef struct
  9. {
  10. uint32_t UartBase;
  11. // uint32_t TxDmaChannelBase;
  12. uint32_t DmaBase;
  13. dma_channel_enum DmaChannelBase;
  14. ApiUart_Status Status;
  15. uint8_t *RxBuffer;
  16. uint16_t RxBufferHead;
  17. uint16_t RxBufferTail;
  18. uint8_t *TxBuffer;
  19. uint16_t TxBufferCount;
  20. void (*AsyncWriteCompleteCallback)();
  21. void (*AsyncWriteErrorCallback)();
  22. void (*AsyncReadCompleteCallback)(uint8_t *data, int16_t count);
  23. void (*AsyncReadErrorCallback)();
  24. int16_t AsyncReadCount;
  25. uint8_t *AsyncReadAddr;
  26. } ApiRtUart_Handle;
  27. extern ApiRtUart_Handle Uarts[1];
  28. void iRtUart_Init();
  29. void iRtUart_RxIsr(uint8_t devIndex);
  30. void iRtUart_AsyncWriteCompleteIsr(uint8_t devIndex);
  31. void iRtUart_AsyncWriteErrorIsr(uint8_t devIndex);
  32. #endif