embassy_stm32/lptim/
mod.rs

1//! Low-power timer (LPTIM)
2
3pub mod pwm;
4pub mod timer;
5
6use crate::rcc::RccPeripheral;
7
8/// Timer channel.
9#[cfg(any(lptim_v2a, lptim_v2b))]
10mod channel;
11#[cfg(any(lptim_v2a, lptim_v2b))]
12pub use channel::Channel;
13use embassy_hal_internal::PeripheralType;
14
15pin_trait!(OutputPin, BasicInstance);
16pin_trait!(Channel1Pin, BasicInstance);
17pin_trait!(Channel2Pin, BasicInstance);
18
19pub(crate) trait SealedInstance: RccPeripheral {
20    fn regs() -> crate::pac::lptim::Lptim;
21}
22pub(crate) trait SealedBasicInstance: RccPeripheral {}
23
24/// LPTIM basic instance trait.
25#[allow(private_bounds)]
26pub trait BasicInstance: PeripheralType + SealedBasicInstance + 'static {}
27
28/// LPTIM instance trait.
29#[allow(private_bounds)]
30pub trait Instance: BasicInstance + SealedInstance + 'static {}
31
32foreach_interrupt! {
33    ($inst:ident, lptim, LPTIM, GLOBAL, $irq:ident) => {
34        impl SealedInstance for crate::peripherals::$inst {
35            fn regs() -> crate::pac::lptim::Lptim {
36                crate::pac::$inst
37            }
38        }
39        impl SealedBasicInstance for crate::peripherals::$inst {
40        }
41        impl BasicInstance for crate::peripherals::$inst {}
42        impl Instance for crate::peripherals::$inst {}
43    };
44    ($inst:ident, lptim, LPTIM_BASIC, GLOBAL, $irq:ident) => {
45        impl SealedBasicInstance for crate::peripherals::$inst {
46        }
47        impl BasicInstance for crate::peripherals::$inst {}
48    };
49}