aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embassy-stm32/build.rs14
-rw-r--r--embassy-stm32/src/rcc/h7.rs9
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 {
348impl_peri!(MCO1, Mco1, set_mco1, set_mco1pre); 348impl_peri!(MCO1, Mco1, set_mco1, set_mco1pre);
349impl_peri!(MCO2, Mco2, set_mco2, set_mco2pre); 349impl_peri!(MCO2, Mco2, set_mco2, set_mco2pre);
350 350
351crate::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
360pub struct Mco<'d, T: McoInstance> { 351pub struct Mco<'d, T: McoInstance> {
361 phantom: PhantomData<&'d mut T>, 352 phantom: PhantomData<&'d mut T>,
362} 353}