31 lines
557 B
Rust
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"); }
|
|
}
|
|
}
|