use core::arch::asm;
pub mod clock;
pub mod watchdog;
#[cfg(feature = "embassy-time")]
pub mod embassy_time;
pub fn delay_cycles(cycles: u32) {
let i = cycles / 4 + 1;
unsafe {
asm!(
".p2align 3",
"1:",
" adds {i}, {i}, 1", " subs {i}, {i}, 2", " bne 1b", i = inout(reg) i => _,
options(nomem, nostack)
);
}
}
pub fn delay_microseconds(microseconds: u64) {
let mut cycles = (clock::current_cpu_frequency() / 1_000_000) as u64 * microseconds;
while cycles > u32::MAX as u64 {
delay_cycles(u32::MAX);
cycles -= 1 << 32;
}
delay_cycles(cycles as u32);
}