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 bycount
.
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
Required methods
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 returnedOk
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.