[−][src]Trait nrf52810_hal::prelude::_embedded_hal_timer_CountDown
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
type Time
The unit of time used by this timer
Required methods
fn start<T>(&mut self, count: T) where
T: Into<Self::Time>,
T: Into<Self::Time>,
Starts a new count down
fn wait(&mut self) -> Result<(), Error<Void>>
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.
Implementors
impl<T> CountDown for Timer<T> where
T: TimerExt,
[src]
T: TimerExt,
type Time = u32
fn start<Time>(&mut self, cycles: Time) where
Time: Into<<Timer<T> as CountDown>::Time>,
[src]
Time: Into<<Timer<T> as CountDown>::Time>,
Start the timer
The timer will run for the given number of cycles, then it will stop and reset.
fn wait(&mut self) -> Result<(), Error<Void>>
[src]
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.