Files
fmn_processor/bench/programs_rust/hello-rust/src/main.rs

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);
}
}
}
}
}