reflow-firmware2.0/src/systick.rs

31 lines
557 B
Rust

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