use hcl::platform::scs; static mut MILLIS : u32 = 0; pub unsafe extern fn isr() { MILLIS = MILLIS.wrapping_add(1); } pub fn configure(st: &mut scs::Systick) { st.configure(|s| s .set_internally_clocked(true) .set_interrupt_enabled(true) .set_reload_value(40_000) .set_enabled(true)); } pub fn millis() -> u32 { unsafe { return MILLIS; } } pub fn delay_ms(ms: u32) { let start = millis(); while millis().wrapping_sub(start) < ms { unsafe { asm!("wfi" :::: "volatile"); } } }