Initial commit: LSPi (LiangShanPi) project
GD32F470ZGT6 based project with full peripheral support: - SDRAM (W9825G6KH) via EXMC - LCD NT35510 (480x800) via EXMC NOR/PSRAM - Flash (W25Q64) via SPI - UART (USART0) debug console - LED indicators - CMSIS-DAP debug interface - CMake + ARM GCC toolchain build system
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
#ifndef __UART_DRIVER_H__
|
||||
#define __UART_DRIVER_H__
|
||||
|
||||
#include <cstdint>
|
||||
#include "bus_core.h"
|
||||
|
||||
enum class UartPort : uint8_t {
|
||||
_0 = 0,
|
||||
_1, _2, _3, _4, _5, _6,
|
||||
MAX
|
||||
};
|
||||
|
||||
struct UartConfig {
|
||||
uint32_t baudrate = 115200;
|
||||
uint8_t data_bits = 8;
|
||||
uint8_t stop_bits = 1;
|
||||
uint8_t parity = 0;
|
||||
};
|
||||
|
||||
class UartBus {
|
||||
public:
|
||||
explicit UartBus(UartPort port);
|
||||
~UartBus();
|
||||
|
||||
UartBus(const UartBus &) = delete;
|
||||
UartBus &operator=(const UartBus &) = delete;
|
||||
|
||||
RetCode init(const UartConfig &config);
|
||||
RetCode deinit();
|
||||
RetCode send_byte(uint8_t data);
|
||||
RetCode send_data(const uint8_t *data, uint32_t len);
|
||||
RetCode receive_byte(uint8_t *data, uint32_t timeout_ms);
|
||||
RetCode irq_handler();
|
||||
|
||||
static UartBus &default_instance();
|
||||
|
||||
private:
|
||||
UartPort port_;
|
||||
UartConfig config_;
|
||||
bool initialized_ = false;
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user