diff options
Diffstat (limited to 'embassy-stm32/src/usb/mod.rs')
-rw-r--r-- | embassy-stm32/src/usb/mod.rs | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/embassy-stm32/src/usb/mod.rs b/embassy-stm32/src/usb/mod.rs new file mode 100644 index 00000000..71b407cb --- /dev/null +++ b/embassy-stm32/src/usb/mod.rs @@ -0,0 +1,36 @@ +use embassy::interrupt::Interrupt; + +use crate::rcc::RccPeripheral; + +#[cfg(feature = "nightly")] +mod usb; +#[cfg(feature = "nightly")] +pub use usb::*; + +pub(crate) mod sealed { + pub trait Instance { + fn regs() -> crate::pac::usb::Usb; + } +} + +pub trait Instance: sealed::Instance + RccPeripheral + 'static { + type Interrupt: Interrupt; +} + +// Internal PHY pins +pin_trait!(DpPin, Instance); +pin_trait!(DmPin, Instance); + +foreach_interrupt!( + ($inst:ident, usb, $block:ident, LP, $irq:ident) => { + impl sealed::Instance for crate::peripherals::$inst { + fn regs() -> crate::pac::usb::Usb { + crate::pac::$inst + } + } + + impl Instance for crate::peripherals::$inst { + type Interrupt = crate::interrupt::$irq; + } + }; +); |