diff options
| -rw-r--r-- | embassy-stm32/build.rs | 14 | ||||
| -rw-r--r-- | embassy-stm32/src/rcc/h7.rs | 9 |
2 files changed, 13 insertions, 10 deletions
diff --git a/embassy-stm32/build.rs b/embassy-stm32/build.rs index 577eb60c2..41f5ce591 100644 --- a/embassy-stm32/build.rs +++ b/embassy-stm32/build.rs | |||
| @@ -251,6 +251,8 @@ fn main() { | |||
| 251 | (("spi", "MISO"), (quote!(crate::spi::MisoPin), quote!())), | 251 | (("spi", "MISO"), (quote!(crate::spi::MisoPin), quote!())), |
| 252 | (("i2c", "SDA"), (quote!(crate::i2c::SdaPin), quote!())), | 252 | (("i2c", "SDA"), (quote!(crate::i2c::SdaPin), quote!())), |
| 253 | (("i2c", "SCL"), (quote!(crate::i2c::SclPin), quote!())), | 253 | (("i2c", "SCL"), (quote!(crate::i2c::SclPin), quote!())), |
| 254 | (("rcc", "MCO_1"), (quote!(crate::rcc::McoPin), quote!())), | ||
| 255 | (("rcc", "MCO_2"), (quote!(crate::rcc::McoPin), quote!())), | ||
| 254 | (("dcmi", "D0"), (quote!(crate::dcmi::D0Pin), quote!())), | 256 | (("dcmi", "D0"), (quote!(crate::dcmi::D0Pin), quote!())), |
| 255 | (("dcmi", "D1"), (quote!(crate::dcmi::D1Pin), quote!())), | 257 | (("dcmi", "D1"), (quote!(crate::dcmi::D1Pin), quote!())), |
| 256 | (("dcmi", "D2"), (quote!(crate::dcmi::D2Pin), quote!())), | 258 | (("dcmi", "D2"), (quote!(crate::dcmi::D2Pin), quote!())), |
| @@ -427,10 +429,20 @@ fn main() { | |||
| 427 | for pin in p.pins { | 429 | for pin in p.pins { |
| 428 | let key = (regs.kind, pin.signal); | 430 | let key = (regs.kind, pin.signal); |
| 429 | if let Some((tr, cfgs)) = signals.get(&key) { | 431 | if let Some((tr, cfgs)) = signals.get(&key) { |
| 430 | let peri = format_ident!("{}", p.name); | 432 | let mut peri = format_ident!("{}", p.name); |
| 431 | let pin_name = format_ident!("{}", pin.pin); | 433 | let pin_name = format_ident!("{}", pin.pin); |
| 432 | let af = pin.af.unwrap_or(0); | 434 | let af = pin.af.unwrap_or(0); |
| 433 | 435 | ||
| 436 | // MCO is special | ||
| 437 | if pin.signal.starts_with("MCO_") { | ||
| 438 | // Supported in H7 only for now | ||
| 439 | if regs.version == "h7" { | ||
| 440 | peri = format_ident!("{}", pin.signal.replace("_", "")); | ||
| 441 | } else { | ||
| 442 | continue; | ||
| 443 | } | ||
| 444 | } | ||
| 445 | |||
| 434 | g.extend(quote! { | 446 | g.extend(quote! { |
| 435 | #cfgs | 447 | #cfgs |
| 436 | pin_trait_impl!(#tr, #peri, #pin_name, #af); | 448 | pin_trait_impl!(#tr, #peri, #pin_name, #af); |
diff --git a/embassy-stm32/src/rcc/h7.rs b/embassy-stm32/src/rcc/h7.rs index 73ad3863e..d2668525d 100644 --- a/embassy-stm32/src/rcc/h7.rs +++ b/embassy-stm32/src/rcc/h7.rs | |||
| @@ -348,15 +348,6 @@ macro_rules! impl_peri { | |||
| 348 | impl_peri!(MCO1, Mco1, set_mco1, set_mco1pre); | 348 | impl_peri!(MCO1, Mco1, set_mco1, set_mco1pre); |
| 349 | impl_peri!(MCO2, Mco2, set_mco2, set_mco2pre); | 349 | impl_peri!(MCO2, Mco2, set_mco2, set_mco2pre); |
| 350 | 350 | ||
| 351 | crate::pac::peripheral_pins!( | ||
| 352 | ($inst:ident, rcc, RCC, $pin:ident, MCO_1, $af:expr) => { | ||
| 353 | pin_trait_impl!(crate::rcc::McoPin, MCO1, $pin, $af); | ||
| 354 | }; | ||
| 355 | ($inst:ident, rcc, RCC, $pin:ident, MCO_2, $af:expr) => { | ||
| 356 | pin_trait_impl!(crate::rcc::McoPin, MCO2, $pin, $af); | ||
| 357 | }; | ||
| 358 | ); | ||
| 359 | |||
| 360 | pub struct Mco<'d, T: McoInstance> { | 351 | pub struct Mco<'d, T: McoInstance> { |
| 361 | phantom: PhantomData<&'d mut T>, | 352 | phantom: PhantomData<&'d mut T>, |
| 362 | } | 353 | } |
