38 [[nodiscard]]
auto GetChar() const -> uint8_t {
59 [[nodiscard]]
auto HasData() const ->
bool {
109 template <
typename Callback>
124 explicit Pl011(uint64_t dev_addr, uint64_t clock = 0, uint64_t baud_rate = 0)
static constexpr uint32_t kRegRSRECR
receive status or error clear
auto PutChar(uint8_t c) const -> void
写入一个字符
static constexpr uint32_t kRegIBRD
integer baud register
Pl011(uint64_t dev_addr, uint64_t clock=0, uint64_t baud_rate=0)
构造函数
auto HasData() const -> bool
检查接收缓冲区是否有数据可读(不消耗数据)
static constexpr uint32_t kLCRHWlen8
line control register bits
static constexpr uint32_t kFRRXFE
static constexpr uint32_t kRegCR
control register
auto operator=(const Pl011 &) -> Pl011 &=delete
auto GetChar() const -> uint8_t
阻塞式读取一个字符
Pl011(const Pl011 &)=delete
auto GetMaskedInterruptStatus() const -> uint32_t
读取屏蔽后的中断状态寄存器(MIS)
static constexpr uint32_t kRegIMSC
interrupt mask set/clear
static constexpr uint32_t kCREnable
control register bits
static constexpr uint32_t kRegLCRH
line control register
auto HandleInterrupt(Callback &&callback) -> void
处理串口接收中断,对每个收到的字符调用回调
static constexpr uint32_t kRegDR
data register
static constexpr uint32_t kRegMIS
masked interrupt status register
static constexpr uint32_t kRegFBRD
fractional baud register
static constexpr uint32_t kCRTxEnable
auto operator=(Pl011 &&) -> Pl011 &=default
auto TryGetChar() const -> std::optional< uint8_t >
非阻塞式尝试读取一个字符
auto ClearInterrupt(uint32_t mask) const -> void
清除指定中断
static constexpr uint32_t kRegRIS
raw interrupt status register
static constexpr uint32_t kRegFR
flag register
auto IsInterruptPending() const -> bool
检查是否有中断挂起
static constexpr uint32_t kRegICR
interrupt clear register
static constexpr uint32_t kCRRxEnable
static constexpr uint32_t kIMSCRxim
interrupt mask bits
static constexpr uint32_t kFRTxFIFO
flag register bits
auto GetRawInterruptStatus() const -> uint32_t
读取原始中断状态寄存器(RIS)
auto Write(size_t offset, T val) const -> void
Write to MMIO register.
auto Read(size_t offset) const -> T
Read from MMIO register.