Trait dwm1001::prelude::_embedded_hal_timer_CountDown[][src]

pub trait _embedded_hal_timer_CountDown {
    type Time;
    fn start<T>(&mut self, count: T)
    where
        T: Into<Self::Time>
;
fn wait(&mut self) -> Result<(), Error<Void>>; }
Expand description

A count down timer

Contract

  • self.start(count); block!(self.wait()); MUST block for AT LEAST the time specified by count.

Note that the implementer doesn’t necessarily have to be a downcounting timer; it could also be an upcounting timer as long as the above contract is upheld.

Examples

You can use this timer to create delays

extern crate embedded_hal as hal;
#[macro_use(block)]
extern crate nb;

use hal::prelude::*;

fn main() {
    let mut led: Led = {
        // ..
    };
    let mut timer: Timer6 = {
        // ..
    };

    Led.on();
    timer.start(1.s());
    block!(timer.wait()); // blocks for 1 second
    Led.off();
}

Associated Types

The unit of time used by this timer

Required methods

Starts a new count down

Non-blockingly “waits” until the count down finishes

Contract
  • If Self: Periodic, the timer will start a new count down right after the last one finishes.
  • Otherwise the behavior of calling wait after the last call returned Ok is UNSPECIFIED. Implementers are suggested to panic on this scenario to signal a programmer error.

Implementations on Foreign Types

Start the timer.

The timer will run for the given number of cycles, then it will stop and reset.

Wait for the timer to stop.

Will return Err(nb::Error::WouldBlock) while the timer is still running. Once the timer reached the number of cycles given in the start method, it will return Ok(()).

To block until the timer has stopped, use the block! macro from the nb crate. Please refer to the documentation of nb for other options.

Implementors