diff options
| -rw-r--r-- | embassy-stm32/build.rs | 4 | ||||
| -rw-r--r-- | embassy-stm32/src/lib.rs | 2 | ||||
| -rw-r--r-- | embassy-stm32/src/ucpd.rs | 28 |
3 files changed, 34 insertions, 0 deletions
diff --git a/embassy-stm32/build.rs b/embassy-stm32/build.rs index 84e8be25d..680216034 100644 --- a/embassy-stm32/build.rs +++ b/embassy-stm32/build.rs | |||
| @@ -764,6 +764,8 @@ fn main() { | |||
| 764 | #[rustfmt::skip] | 764 | #[rustfmt::skip] |
| 765 | let signals: HashMap<_, _> = [ | 765 | let signals: HashMap<_, _> = [ |
| 766 | // (kind, signal) => trait | 766 | // (kind, signal) => trait |
| 767 | (("ucpd", "CC1"), quote!(crate::ucpd::Cc1Pin)), | ||
| 768 | (("ucpd", "CC2"), quote!(crate::ucpd::Cc2Pin)), | ||
| 767 | (("usart", "TX"), quote!(crate::usart::TxPin)), | 769 | (("usart", "TX"), quote!(crate::usart::TxPin)), |
| 768 | (("usart", "RX"), quote!(crate::usart::RxPin)), | 770 | (("usart", "RX"), quote!(crate::usart::RxPin)), |
| 769 | (("usart", "CTS"), quote!(crate::usart::CtsPin)), | 771 | (("usart", "CTS"), quote!(crate::usart::CtsPin)), |
| @@ -1102,6 +1104,8 @@ fn main() { | |||
| 1102 | 1104 | ||
| 1103 | let signals: HashMap<_, _> = [ | 1105 | let signals: HashMap<_, _> = [ |
| 1104 | // (kind, signal) => trait | 1106 | // (kind, signal) => trait |
| 1107 | (("ucpd", "RX"), quote!(crate::ucpd::RxDma)), | ||
| 1108 | (("ucpd", "TX"), quote!(crate::ucpd::TxDma)), | ||
| 1105 | (("usart", "RX"), quote!(crate::usart::RxDma)), | 1109 | (("usart", "RX"), quote!(crate::usart::RxDma)), |
| 1106 | (("usart", "TX"), quote!(crate::usart::TxDma)), | 1110 | (("usart", "TX"), quote!(crate::usart::TxDma)), |
| 1107 | (("lpuart", "RX"), quote!(crate::usart::RxDma)), | 1111 | (("lpuart", "RX"), quote!(crate::usart::RxDma)), |
diff --git a/embassy-stm32/src/lib.rs b/embassy-stm32/src/lib.rs index b548a0343..361dc6f53 100644 --- a/embassy-stm32/src/lib.rs +++ b/embassy-stm32/src/lib.rs | |||
| @@ -73,6 +73,8 @@ pub mod sai; | |||
| 73 | pub mod sdmmc; | 73 | pub mod sdmmc; |
| 74 | #[cfg(spi)] | 74 | #[cfg(spi)] |
| 75 | pub mod spi; | 75 | pub mod spi; |
| 76 | #[cfg(ucpd)] | ||
| 77 | pub mod ucpd; | ||
| 76 | #[cfg(uid)] | 78 | #[cfg(uid)] |
| 77 | pub mod uid; | 79 | pub mod uid; |
| 78 | #[cfg(usart)] | 80 | #[cfg(usart)] |
diff --git a/embassy-stm32/src/ucpd.rs b/embassy-stm32/src/ucpd.rs new file mode 100644 index 000000000..a2bac7611 --- /dev/null +++ b/embassy-stm32/src/ucpd.rs | |||
| @@ -0,0 +1,28 @@ | |||
| 1 | //! USB Type-C/USB Power Delivery Interface (UCPD) | ||
| 2 | |||
| 3 | use crate::rcc::RccPeripheral; | ||
| 4 | |||
| 5 | /// UCPD instance trait. | ||
| 6 | pub trait Instance: sealed::Instance + RccPeripheral {} | ||
| 7 | |||
| 8 | pub(crate) mod sealed { | ||
| 9 | pub trait Instance { | ||
| 10 | const REGS: crate::pac::ucpd::Ucpd; | ||
| 11 | } | ||
| 12 | } | ||
| 13 | |||
| 14 | foreach_peripheral!( | ||
| 15 | (ucpd, $inst:ident) => { | ||
| 16 | impl sealed::Instance for crate::peripherals::$inst { | ||
| 17 | const REGS: crate::pac::ucpd::Ucpd = crate::pac::$inst; | ||
| 18 | } | ||
| 19 | |||
| 20 | impl Instance for crate::peripherals::$inst {} | ||
| 21 | }; | ||
| 22 | ); | ||
| 23 | |||
| 24 | pin_trait!(Cc1Pin, Instance); | ||
| 25 | pin_trait!(Cc2Pin, Instance); | ||
| 26 | |||
| 27 | dma_trait!(TxDma, Instance); | ||
| 28 | dma_trait!(RxDma, Instance); | ||
