litex-hal 0.4.0

A embedded HAL crate for LiteX cores
Documentation
#![no_std]
#![no_main]

use core::fmt::Write;
use litex_hal::prelude::*;
use litex_sim_pac::{riscv_rt::entry, Peripherals};
use panic_halt as _;

litex_hal::uart! {
    Uart: litex_sim_pac::UART,
}

litex_hal::timer! {
    Timer: litex_sim_pac::TIMER0,
}

const SYSTEM_CLOCK_FREQUENCY: u32 = 1_000_000;

#[entry]
fn main() -> ! {
    let peripherals = unsafe { Peripherals::steal() };
    let mut uart = Uart::new(peripherals.UART);
    writeln!(uart, "Peripherals initialized").unwrap();

    let mut timer = Timer::new(peripherals.TIMER0, SYSTEM_CLOCK_FREQUENCY);
    let mut uptime = 0;
    loop {
        timer.delay_ms(1000_u32);
        uptime += 1;
        writeln!(uart, "Uptime: {} seconds", uptime).unwrap();
    }
}