49 lines
1.3 KiB
Rust
49 lines
1.3 KiB
Rust
//! Low-power timer (LPTIM)
|
|
|
|
pub mod pwm;
|
|
pub mod timer;
|
|
|
|
use crate::rcc::RccPeripheral;
|
|
|
|
/// Timer channel.
|
|
#[cfg(any(lptim_v2a, lptim_v2b))]
|
|
mod channel;
|
|
#[cfg(any(lptim_v2a, lptim_v2b))]
|
|
pub use channel::Channel;
|
|
|
|
pin_trait!(OutputPin, BasicInstance);
|
|
pin_trait!(Channel1Pin, BasicInstance);
|
|
pin_trait!(Channel2Pin, BasicInstance);
|
|
|
|
pub(crate) trait SealedInstance: RccPeripheral {
|
|
fn regs() -> crate::pac::lptim::Lptim;
|
|
}
|
|
pub(crate) trait SealedBasicInstance: RccPeripheral {}
|
|
|
|
/// LPTIM basic instance trait.
|
|
#[allow(private_bounds)]
|
|
pub trait BasicInstance: SealedBasicInstance + 'static {}
|
|
|
|
/// LPTIM instance trait.
|
|
#[allow(private_bounds)]
|
|
pub trait Instance: BasicInstance + SealedInstance + 'static {}
|
|
|
|
foreach_interrupt! {
|
|
($inst:ident, lptim, LPTIM, GLOBAL, $irq:ident) => {
|
|
impl SealedInstance for crate::peripherals::$inst {
|
|
fn regs() -> crate::pac::lptim::Lptim {
|
|
crate::pac::$inst
|
|
}
|
|
}
|
|
impl SealedBasicInstance for crate::peripherals::$inst {
|
|
}
|
|
impl BasicInstance for crate::peripherals::$inst {}
|
|
impl Instance for crate::peripherals::$inst {}
|
|
};
|
|
($inst:ident, lptim, LPTIM_BASIC, GLOBAL, $irq:ident) => {
|
|
impl SealedBasicInstance for crate::peripherals::$inst {
|
|
}
|
|
impl BasicInstance for crate::peripherals::$inst {}
|
|
};
|
|
}
|