refactor: UartBus全面重构为USART,支持直接构造即可用
- UartBus -> USART (类名更符合外设命名规范) - 构造函数 USART(UartPort port, uint32_t baudrate) 自动完成GPIO+外设初始化 - 移除default_instance()单例模式,移除init()/deinit()/irq_handler() - 新增reinit(baudrate)支持时钟切换后波特率重新校准 - 新增static setDefault()用于printf路由选择 - 移除UartConfig配置结构体 - 更新iap.h/iap.cpp中UartBus引用为USART - 更新main.cpp使用新USART构造模式
This commit is contained in:
+14
-17
@@ -10,34 +10,31 @@ enum class UartPort : uint8_t {
|
||||
MAX
|
||||
};
|
||||
|
||||
struct UartConfig {
|
||||
uint32_t baudrate = 115200;
|
||||
uint8_t data_bits = 8;
|
||||
uint8_t stop_bits = 1;
|
||||
uint8_t parity = 0;
|
||||
};
|
||||
|
||||
class UartBus {
|
||||
class USART {
|
||||
public:
|
||||
explicit UartBus(UartPort port);
|
||||
~UartBus();
|
||||
USART(UartPort port, uint32_t baudrate = 115200);
|
||||
~USART();
|
||||
|
||||
UartBus(const UartBus &) = delete;
|
||||
UartBus &operator=(const UartBus &) = delete;
|
||||
USART(const USART &) = delete;
|
||||
USART &operator=(const USART &) = 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();
|
||||
void reinit(uint32_t baudrate);
|
||||
|
||||
static UartBus &default_instance();
|
||||
UartPort port() const { return port_; }
|
||||
bool is_initialized() const { return initialized_; }
|
||||
|
||||
static void setDefault(USART *uart);
|
||||
static USART *defaultInstance() { return default_; }
|
||||
|
||||
private:
|
||||
UartPort port_;
|
||||
UartConfig config_;
|
||||
uint32_t baudrate_;
|
||||
bool initialized_ = false;
|
||||
|
||||
static USART *default_;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user