Files
lishanpi/drv/uart/uart_driver.h
T
hm fc10ef2e10 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
2026-04-26 16:24:42 +08:00

44 lines
868 B
C++

#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