stm32f1xx_hal/timer/
hal_1.rs1use core::convert::Infallible;
7use embedded_hal::delay::DelayNs;
8
9use super::{Delay, Instance, PwmChannel, SysDelay, WithPwm};
10use fugit::ExtU32Ceil;
11
12impl DelayNs for SysDelay {
13 fn delay_ns(&mut self, ns: u32) {
14 self.delay(ns.nanos_at_least());
15 }
16
17 fn delay_ms(&mut self, ms: u32) {
18 self.delay(ms.millis_at_least());
19 }
20}
21
22impl<TIM: Instance, const FREQ: u32> DelayNs for Delay<TIM, FREQ> {
23 fn delay_ns(&mut self, ns: u32) {
24 self.delay(ns.micros_at_least());
25 }
26
27 fn delay_us(&mut self, us: u32) {
28 self.delay(us.micros_at_least());
29 }
30
31 fn delay_ms(&mut self, ms: u32) {
32 self.delay(ms.millis_at_least());
33 }
34}
35
36impl<TIM: Instance + WithPwm, const C: u8> embedded_hal::pwm::ErrorType for PwmChannel<TIM, C> {
37 type Error = Infallible;
38}
39
40impl<TIM: Instance + WithPwm, const C: u8> embedded_hal::pwm::SetDutyCycle for PwmChannel<TIM, C> {
41 fn max_duty_cycle(&self) -> u16 {
42 self.get_max_duty()
43 }
44 fn set_duty_cycle(&mut self, duty: u16) -> Result<(), Self::Error> {
45 self.set_duty(duty);
46 Ok(())
47 }
48}