52 lines
1.4 KiB
Rust
52 lines
1.4 KiB
Rust
#![no_std]
|
|
#![no_main]
|
|
|
|
use core::arch::asm;
|
|
|
|
use fpga_lib::{
|
|
interface::{Buttons, Leds},
|
|
panic_handler,
|
|
register::X31,
|
|
vga::{BLACK, BLUE, FONT_WIDTH, GREEN, RED, VGA, WHITE},
|
|
};
|
|
|
|
panic_handler! {}
|
|
|
|
#[unsafe(no_mangle)]
|
|
pub extern "C" fn main() -> !
|
|
{
|
|
loop
|
|
{
|
|
unsafe {
|
|
VGA::draw_string(10, 10, "Running RUST !", GREEN);
|
|
VGA::draw_string(10, 23, "LedIp state :", RED);
|
|
|
|
let clint_time: *mut u64 = 0x0200bff8 as *mut u64;
|
|
|
|
let clocks = *clint_time;
|
|
let seconds = clocks / (125_000_000 / 2);
|
|
VGA::draw_string(100, 10, "CLint:", BLUE);
|
|
VGA::draw_u64(150, 10, clocks, BLUE, BLACK);
|
|
VGA::draw_string(100, 23, "(s)", BLUE);
|
|
VGA::draw_u64(150, 23, seconds, BLUE, BLACK);
|
|
|
|
for i in 0..4
|
|
{
|
|
VGA::draw_char(10 + i * 16, 46, 'B', RED);
|
|
VGA::draw_char(16 + i * 16, 46, (b'0' + i as u8) as char, RED);
|
|
|
|
if Buttons::get_button(i as u8)
|
|
{
|
|
Leds::set_led(i as u8, true);
|
|
VGA::draw_char_bg(10 + i * 16, 59, '1', GREEN, BLACK);
|
|
}
|
|
else
|
|
{
|
|
Leds::set_led(i as u8, false);
|
|
VGA::draw_char_bg(10 + i * 16, 59, '0', RED, BLACK);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|