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}