platform/delay.rs
1//! Basic blocking delay
2//!
3//! This module provides a basic asm-based blocking delay.
4use embedded_hal_02::blocking::delay::DelayUs;
5
6/// A basic delay implementation.
7pub struct AsmDelay {
8 frequency_us: u32,
9}
10
11impl AsmDelay {
12 /// Create a new delay.
13 ///
14 /// # Args
15 /// * `freq` - The CPU core frequency.
16 pub fn new(freq: u32) -> AsmDelay {
17 AsmDelay {
18 frequency_us: freq / 1_000_000,
19 }
20 }
21}
22
23impl<U> DelayUs<U> for AsmDelay
24where
25 U: Into<u32>,
26{
27 fn delay_us(&mut self, us: U) {
28 cortex_m::asm::delay(self.frequency_us * us.into())
29 }
30}