zynq-rs/src/uart/mod.rs

35 lines
726 B
Rust
Raw Normal View History

2019-05-05 20:56:23 +08:00
mod regs;
pub use regs::RegisterBlock;
pub struct Uart {
regs: &'static mut RegisterBlock,
}
impl Uart {
pub fn uart0() -> Self {
let uart_rst_ctrl = super::slcr::UartRstCtrl::new();
uart_rst_ctrl.reset_uart0();
// TODO: Route UART 0 RxD/TxD Signals to MIO Pins
let uart_clk_ctrl = super::slcr::UartClkCtrl::new();
uart_clk_ctrl.enable_uart0();
Uart {
regs: RegisterBlock::uart0(),
}.init()
}
fn init(self) -> Self {
self.regs.configure();
self
}
pub fn write_byte(&self, v: u8) {
unsafe {
while self.regs.tx_fifo_full() {}
self.regs.write_byte(v);
}
}
}