use core::ptr::{read_volatile, write_volatile}; const TIMER_CONTROL: *mut u32 = (0x02000020) as *mut u32; const TIMER_LOAD : *mut u32 = (0x02000024) as *mut u32; const TIMER_RELOAD : *mut u32 = (0x02000028) as *mut u32; const TIMER_CURRENT: *mut u32 = (0x0200002C) as *mut u32; pub fn timer_enable() { unsafe { let bitmasked = read_volatile(TIMER_CONTROL) & (!0x11) as u32; write_volatile(TIMER_CONTROL, (0x11 | bitmasked) as u32); } } pub fn timer_disable() { unsafe { let bitmasked = read_volatile(TIMER_CONTROL) & (!0x11) as u32; write_volatile(TIMER_CONTROL, (0x00 | bitmasked) as u32); } } pub fn timer_set(load: u32, reload: u32) { unsafe { write_volatile(TIMER_LOAD, load as u32); write_volatile(TIMER_RELOAD, reload as u32); } } pub fn timer_get() -> u32 { unsafe { return read_volatile(TIMER_CURRENT) as u32 } }