aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2022-02-23 19:51:52 +0000
committerGitHub <[email protected]>2022-02-23 19:51:52 +0000
commitcaad1111f9361471310a527c0da36c139c447936 (patch)
tree5b6088965d9d254874d6cfdf434272bcc753c4a1
parent042e7d6de7771f3b70cc7a1e9c46661dc68f1042 (diff)
parent93a3323ed94a255b40cb1353515d01bc3c339a7b (diff)
Merge #639
639: stm32: move pin trait impls from macrotables to build.rs r=Dirbaio a=Dirbaio Continuation of work from #601 #638 Co-authored-by: Dario Nieuwenhuis <[email protected]>
-rw-r--r--embassy-stm32/build.rs244
-rw-r--r--embassy-stm32/src/adc/mod.rs60
-rw-r--r--embassy-stm32/src/can/bxcan.rs15
-rw-r--r--embassy-stm32/src/dac/mod.rs23
-rw-r--r--embassy-stm32/src/dcmi.rs54
-rw-r--r--embassy-stm32/src/eth/mod.rs30
-rw-r--r--embassy-stm32/src/fmc/pins.rs300
-rw-r--r--embassy-stm32/src/i2c/mod.rs20
-rw-r--r--embassy-stm32/src/pwm/mod.rs48
-rw-r--r--embassy-stm32/src/rcc/h7.rs9
-rw-r--r--embassy-stm32/src/sdmmc/v2.rs36
-rw-r--r--embassy-stm32/src/spi/mod.rs26
-rw-r--r--embassy-stm32/src/traits.rs4
-rw-r--r--embassy-stm32/src/usart/mod.rs76
-rw-r--r--embassy-stm32/src/usb_otg.rs56
-rw-r--r--stm32-metapac-gen/src/assets/metadata.rs2
-rw-r--r--stm32-metapac-gen/src/data.rs2
-rw-r--r--stm32-metapac-gen/src/lib.rs15
18 files changed, 256 insertions, 764 deletions
diff --git a/embassy-stm32/build.rs b/embassy-stm32/build.rs
index fd9a07ced..2b642db84 100644
--- a/embassy-stm32/build.rs
+++ b/embassy-stm32/build.rs
@@ -231,6 +231,250 @@ fn main() {
231 } 231 }
232 232
233 // ======== 233 // ========
234 // Generate pin_trait_impl!
235
236 #[rustfmt::skip]
237 let signals: HashMap<_, _> = [
238 // (kind, signal) => (trait, cfgs)
239 (("usart", "TX"), (quote!(crate::usart::TxPin), quote!())),
240 (("usart", "RX"), (quote!(crate::usart::RxPin), quote!())),
241 (("usart", "CTS"), (quote!(crate::usart::CtsPin), quote!())),
242 (("usart", "RTS"), (quote!(crate::usart::RtsPin), quote!())),
243 (("usart", "CK"), (quote!(crate::usart::CkPin), quote!())),
244 (("usart", "TX"), (quote!(crate::usart::TxPin), quote!())),
245 (("usart", "RX"), (quote!(crate::usart::RxPin), quote!())),
246 (("usart", "CTS"), (quote!(crate::usart::CtsPin), quote!())),
247 (("usart", "RTS"), (quote!(crate::usart::RtsPin), quote!())),
248 (("usart", "CK"), (quote!(crate::usart::CkPin), quote!())),
249 (("spi", "SCK"), (quote!(crate::spi::SckPin), quote!())),
250 (("spi", "MOSI"), (quote!(crate::spi::MosiPin), quote!())),
251 (("spi", "MISO"), (quote!(crate::spi::MisoPin), quote!())),
252 (("i2c", "SDA"), (quote!(crate::i2c::SdaPin), 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!())),
256 (("dcmi", "D0"), (quote!(crate::dcmi::D0Pin), quote!())),
257 (("dcmi", "D1"), (quote!(crate::dcmi::D1Pin), quote!())),
258 (("dcmi", "D2"), (quote!(crate::dcmi::D2Pin), quote!())),
259 (("dcmi", "D3"), (quote!(crate::dcmi::D3Pin), quote!())),
260 (("dcmi", "D4"), (quote!(crate::dcmi::D4Pin), quote!())),
261 (("dcmi", "D5"), (quote!(crate::dcmi::D5Pin), quote!())),
262 (("dcmi", "D6"), (quote!(crate::dcmi::D6Pin), quote!())),
263 (("dcmi", "D7"), (quote!(crate::dcmi::D7Pin), quote!())),
264 (("dcmi", "D8"), (quote!(crate::dcmi::D8Pin), quote!())),
265 (("dcmi", "D9"), (quote!(crate::dcmi::D9Pin), quote!())),
266 (("dcmi", "D10"), (quote!(crate::dcmi::D10Pin), quote!())),
267 (("dcmi", "D11"), (quote!(crate::dcmi::D11Pin), quote!())),
268 (("dcmi", "D12"), (quote!(crate::dcmi::D12Pin), quote!())),
269 (("dcmi", "D13"), (quote!(crate::dcmi::D13Pin), quote!())),
270 (("dcmi", "HSYNC"), (quote!(crate::dcmi::HSyncPin), quote!())),
271 (("dcmi", "VSYNC"), (quote!(crate::dcmi::VSyncPin), quote!())),
272 (("dcmi", "PIXCLK"), (quote!(crate::dcmi::PixClkPin), quote!())),
273 (("otgfs", "DP"), (quote!(crate::usb_otg::DpPin), quote!(#[cfg(feature="usb-otg")]))),
274 (("otgfs", "DM"), (quote!(crate::usb_otg::DmPin), quote!(#[cfg(feature="usb-otg")]))),
275 (("otghs", "DP"), (quote!(crate::usb_otg::DpPin), quote!(#[cfg(feature="usb-otg")]))),
276 (("otghs", "DM"), (quote!(crate::usb_otg::DmPin), quote!(#[cfg(feature="usb-otg")]))),
277 (("otghs", "ULPI_CK"), (quote!(crate::usb_otg::UlpiClkPin), quote!(#[cfg(feature="usb-otg")]))),
278 (("otghs", "ULPI_DIR"), (quote!(crate::usb_otg::UlpiDirPin), quote!(#[cfg(feature="usb-otg")]))),
279 (("otghs", "ULPI_NXT"), (quote!(crate::usb_otg::UlpiNxtPin), quote!(#[cfg(feature="usb-otg")]))),
280 (("otghs", "ULPI_STP"), (quote!(crate::usb_otg::UlpiStpPin), quote!(#[cfg(feature="usb-otg")]))),
281 (("otghs", "ULPI_D0"), (quote!(crate::usb_otg::UlpiD0Pin), quote!(#[cfg(feature="usb-otg")]))),
282 (("otghs", "ULPI_D1"), (quote!(crate::usb_otg::UlpiD1Pin), quote!(#[cfg(feature="usb-otg")]))),
283 (("otghs", "ULPI_D2"), (quote!(crate::usb_otg::UlpiD2Pin), quote!(#[cfg(feature="usb-otg")]))),
284 (("otghs", "ULPI_D3"), (quote!(crate::usb_otg::UlpiD3Pin), quote!(#[cfg(feature="usb-otg")]))),
285 (("otghs", "ULPI_D4"), (quote!(crate::usb_otg::UlpiD4Pin), quote!(#[cfg(feature="usb-otg")]))),
286 (("otghs", "ULPI_D5"), (quote!(crate::usb_otg::UlpiD5Pin), quote!(#[cfg(feature="usb-otg")]))),
287 (("otghs", "ULPI_D6"), (quote!(crate::usb_otg::UlpiD6Pin), quote!(#[cfg(feature="usb-otg")]))),
288 (("otghs", "ULPI_D7"), (quote!(crate::usb_otg::UlpiD7Pin), quote!(#[cfg(feature="usb-otg")]))),
289 (("can", "TX"), (quote!(crate::can::TxPin), quote!())),
290 (("can", "RX"), (quote!(crate::can::RxPin), quote!())),
291 (("eth", "REF_CLK"), (quote!(crate::eth::RefClkPin), quote!(#[cfg(feature="net")]))),
292 (("eth", "MDIO"), (quote!(crate::eth::MDIOPin), quote!(#[cfg(feature="net")]))),
293 (("eth", "MDC"), (quote!(crate::eth::MDCPin), quote!(#[cfg(feature="net")]))),
294 (("eth", "CRS_DV"), (quote!(crate::eth::CRSPin), quote!(#[cfg(feature="net")]))),
295 (("eth", "RXD0"), (quote!(crate::eth::RXD0Pin), quote!(#[cfg(feature="net")]))),
296 (("eth", "RXD1"), (quote!(crate::eth::RXD1Pin), quote!(#[cfg(feature="net")]))),
297 (("eth", "TXD0"), (quote!(crate::eth::TXD0Pin), quote!(#[cfg(feature="net")]))),
298 (("eth", "TXD1"), (quote!(crate::eth::TXD1Pin), quote!(#[cfg(feature="net")]))),
299 (("eth", "TX_EN"), (quote!(crate::eth::TXEnPin), quote!(#[cfg(feature="net")]))),
300 (("fmc", "A0"), (quote!(crate::fmc::A0Pin), quote!())),
301 (("fmc", "A1"), (quote!(crate::fmc::A1Pin), quote!())),
302 (("fmc", "A2"), (quote!(crate::fmc::A2Pin), quote!())),
303 (("fmc", "A3"), (quote!(crate::fmc::A3Pin), quote!())),
304 (("fmc", "A4"), (quote!(crate::fmc::A4Pin), quote!())),
305 (("fmc", "A5"), (quote!(crate::fmc::A5Pin), quote!())),
306 (("fmc", "A6"), (quote!(crate::fmc::A6Pin), quote!())),
307 (("fmc", "A7"), (quote!(crate::fmc::A7Pin), quote!())),
308 (("fmc", "A8"), (quote!(crate::fmc::A8Pin), quote!())),
309 (("fmc", "A9"), (quote!(crate::fmc::A9Pin), quote!())),
310 (("fmc", "A10"), (quote!(crate::fmc::A10Pin), quote!())),
311 (("fmc", "A11"), (quote!(crate::fmc::A11Pin), quote!())),
312 (("fmc", "A12"), (quote!(crate::fmc::A12Pin), quote!())),
313 (("fmc", "A13"), (quote!(crate::fmc::A13Pin), quote!())),
314 (("fmc", "A14"), (quote!(crate::fmc::A14Pin), quote!())),
315 (("fmc", "A15"), (quote!(crate::fmc::A15Pin), quote!())),
316 (("fmc", "A16"), (quote!(crate::fmc::A16Pin), quote!())),
317 (("fmc", "A17"), (quote!(crate::fmc::A17Pin), quote!())),
318 (("fmc", "A18"), (quote!(crate::fmc::A18Pin), quote!())),
319 (("fmc", "A19"), (quote!(crate::fmc::A19Pin), quote!())),
320 (("fmc", "A20"), (quote!(crate::fmc::A20Pin), quote!())),
321 (("fmc", "A21"), (quote!(crate::fmc::A21Pin), quote!())),
322 (("fmc", "A22"), (quote!(crate::fmc::A22Pin), quote!())),
323 (("fmc", "A23"), (quote!(crate::fmc::A23Pin), quote!())),
324 (("fmc", "A24"), (quote!(crate::fmc::A24Pin), quote!())),
325 (("fmc", "A25"), (quote!(crate::fmc::A25Pin), quote!())),
326 (("fmc", "D0"), (quote!(crate::fmc::D0Pin), quote!())),
327 (("fmc", "D1"), (quote!(crate::fmc::D1Pin), quote!())),
328 (("fmc", "D2"), (quote!(crate::fmc::D2Pin), quote!())),
329 (("fmc", "D3"), (quote!(crate::fmc::D3Pin), quote!())),
330 (("fmc", "D4"), (quote!(crate::fmc::D4Pin), quote!())),
331 (("fmc", "D5"), (quote!(crate::fmc::D5Pin), quote!())),
332 (("fmc", "D6"), (quote!(crate::fmc::D6Pin), quote!())),
333 (("fmc", "D7"), (quote!(crate::fmc::D7Pin), quote!())),
334 (("fmc", "D8"), (quote!(crate::fmc::D8Pin), quote!())),
335 (("fmc", "D9"), (quote!(crate::fmc::D9Pin), quote!())),
336 (("fmc", "D10"), (quote!(crate::fmc::D10Pin), quote!())),
337 (("fmc", "D11"), (quote!(crate::fmc::D11Pin), quote!())),
338 (("fmc", "D12"), (quote!(crate::fmc::D12Pin), quote!())),
339 (("fmc", "D13"), (quote!(crate::fmc::D13Pin), quote!())),
340 (("fmc", "D14"), (quote!(crate::fmc::D14Pin), quote!())),
341 (("fmc", "D15"), (quote!(crate::fmc::D15Pin), quote!())),
342 (("fmc", "D16"), (quote!(crate::fmc::D16Pin), quote!())),
343 (("fmc", "D17"), (quote!(crate::fmc::D17Pin), quote!())),
344 (("fmc", "D18"), (quote!(crate::fmc::D18Pin), quote!())),
345 (("fmc", "D19"), (quote!(crate::fmc::D19Pin), quote!())),
346 (("fmc", "D20"), (quote!(crate::fmc::D20Pin), quote!())),
347 (("fmc", "D21"), (quote!(crate::fmc::D21Pin), quote!())),
348 (("fmc", "D22"), (quote!(crate::fmc::D22Pin), quote!())),
349 (("fmc", "D23"), (quote!(crate::fmc::D23Pin), quote!())),
350 (("fmc", "D24"), (quote!(crate::fmc::D24Pin), quote!())),
351 (("fmc", "D25"), (quote!(crate::fmc::D25Pin), quote!())),
352 (("fmc", "D26"), (quote!(crate::fmc::D26Pin), quote!())),
353 (("fmc", "D27"), (quote!(crate::fmc::D27Pin), quote!())),
354 (("fmc", "D28"), (quote!(crate::fmc::D28Pin), quote!())),
355 (("fmc", "D29"), (quote!(crate::fmc::D29Pin), quote!())),
356 (("fmc", "D30"), (quote!(crate::fmc::D30Pin), quote!())),
357 (("fmc", "D31"), (quote!(crate::fmc::D31Pin), quote!())),
358 (("fmc", "DA0"), (quote!(crate::fmc::DA0Pin), quote!())),
359 (("fmc", "DA1"), (quote!(crate::fmc::DA1Pin), quote!())),
360 (("fmc", "DA2"), (quote!(crate::fmc::DA2Pin), quote!())),
361 (("fmc", "DA3"), (quote!(crate::fmc::DA3Pin), quote!())),
362 (("fmc", "DA4"), (quote!(crate::fmc::DA4Pin), quote!())),
363 (("fmc", "DA5"), (quote!(crate::fmc::DA5Pin), quote!())),
364 (("fmc", "DA6"), (quote!(crate::fmc::DA6Pin), quote!())),
365 (("fmc", "DA7"), (quote!(crate::fmc::DA7Pin), quote!())),
366 (("fmc", "DA8"), (quote!(crate::fmc::DA8Pin), quote!())),
367 (("fmc", "DA9"), (quote!(crate::fmc::DA9Pin), quote!())),
368 (("fmc", "DA10"), (quote!(crate::fmc::DA10Pin), quote!())),
369 (("fmc", "DA11"), (quote!(crate::fmc::DA11Pin), quote!())),
370 (("fmc", "DA12"), (quote!(crate::fmc::DA12Pin), quote!())),
371 (("fmc", "DA13"), (quote!(crate::fmc::DA13Pin), quote!())),
372 (("fmc", "DA14"), (quote!(crate::fmc::DA14Pin), quote!())),
373 (("fmc", "DA15"), (quote!(crate::fmc::DA15Pin), quote!())),
374 (("fmc", "SDNWE"), (quote!(crate::fmc::SDNWEPin), quote!())),
375 (("fmc", "SDNCAS"), (quote!(crate::fmc::SDNCASPin), quote!())),
376 (("fmc", "SDNRAS"), (quote!(crate::fmc::SDNRASPin), quote!())),
377 (("fmc", "SDNE0"), (quote!(crate::fmc::SDNE0Pin), quote!())),
378 (("fmc", "SDNE1"), (quote!(crate::fmc::SDNE1Pin), quote!())),
379 (("fmc", "SDCKE0"), (quote!(crate::fmc::SDCKE0Pin), quote!())),
380 (("fmc", "SDCKE1"), (quote!(crate::fmc::SDCKE1Pin), quote!())),
381 (("fmc", "SDCLK"), (quote!(crate::fmc::SDCLKPin), quote!())),
382 (("fmc", "NBL0"), (quote!(crate::fmc::NBL0Pin), quote!())),
383 (("fmc", "NBL1"), (quote!(crate::fmc::NBL1Pin), quote!())),
384 (("fmc", "NBL2"), (quote!(crate::fmc::NBL2Pin), quote!())),
385 (("fmc", "NBL3"), (quote!(crate::fmc::NBL3Pin), quote!())),
386 (("fmc", "INT"), (quote!(crate::fmc::INTPin), quote!())),
387 (("fmc", "NL"), (quote!(crate::fmc::NLPin), quote!())),
388 (("fmc", "NWAIT"), (quote!(crate::fmc::NWaitPin), quote!())),
389 (("fmc", "NE1"), (quote!(crate::fmc::NE1Pin), quote!())),
390 (("fmc", "NE2"), (quote!(crate::fmc::NE2Pin), quote!())),
391 (("fmc", "NE3"), (quote!(crate::fmc::NE3Pin), quote!())),
392 (("fmc", "NE4"), (quote!(crate::fmc::NE4Pin), quote!())),
393 (("fmc", "NCE"), (quote!(crate::fmc::NCEPin), quote!())),
394 (("fmc", "NOE"), (quote!(crate::fmc::NOEPin), quote!())),
395 (("fmc", "NWE"), (quote!(crate::fmc::NWEPin), quote!())),
396 (("fmc", "Clk"), (quote!(crate::fmc::ClkPin), quote!())),
397 (("fmc", "BA0"), (quote!(crate::fmc::BA0Pin), quote!())),
398 (("fmc", "BA1"), (quote!(crate::fmc::BA1Pin), quote!())),
399 (("timer", "CH1"), (quote!(crate::pwm::Channel1Pin), quote!())),
400 (("timer", "CH1N"), (quote!(crate::pwm::Channel1ComplementaryPin), quote!())),
401 (("timer", "CH2"), (quote!(crate::pwm::Channel2Pin), quote!())),
402 (("timer", "CH2N"), (quote!(crate::pwm::Channel2ComplementaryPin), quote!())),
403 (("timer", "CH3"), (quote!(crate::pwm::Channel3Pin), quote!())),
404 (("timer", "CH3N"), (quote!(crate::pwm::Channel3ComplementaryPin), quote!())),
405 (("timer", "CH4"), (quote!(crate::pwm::Channel4Pin), quote!())),
406 (("timer", "CH4N"), (quote!(crate::pwm::Channel4ComplementaryPin), quote!())),
407 (("timer", "ETR"), (quote!(crate::pwm::ExternalTriggerPin), quote!())),
408 (("timer", "BKIN"), (quote!(crate::pwm::BreakInputPin), quote!())),
409 (("timer", "BKIN_COMP1"), (quote!(crate::pwm::BreakInputComparator1Pin), quote!())),
410 (("timer", "BKIN_COMP2"), (quote!(crate::pwm::BreakInputComparator2Pin), quote!())),
411 (("timer", "BKIN2"), (quote!(crate::pwm::BreakInput2Pin), quote!())),
412 (("timer", "BKIN2_COMP1"), (quote!(crate::pwm::BreakInput2Comparator1Pin), quote!())),
413 (("timer", "BKIN2_COMP2"), (quote!(crate::pwm::BreakInput2Comparator2Pin), quote!())),
414 (("sdmmc", "CK"), (quote!(crate::sdmmc::CkPin), quote!(#[cfg(feature="sdmmc-rs")]))),
415 (("sdmmc", "CMD"), (quote!(crate::sdmmc::CmdPin), quote!(#[cfg(feature="sdmmc-rs")]))),
416 (("sdmmc", "D0"), (quote!(crate::sdmmc::D0Pin), quote!(#[cfg(feature="sdmmc-rs")]))),
417 (("sdmmc", "D1"), (quote!(crate::sdmmc::D1Pin), quote!(#[cfg(feature="sdmmc-rs")]))),
418 (("sdmmc", "D2"), (quote!(crate::sdmmc::D2Pin), quote!(#[cfg(feature="sdmmc-rs")]))),
419 (("sdmmc", "D3"), (quote!(crate::sdmmc::D3Pin), quote!(#[cfg(feature="sdmmc-rs")]))),
420 (("sdmmc", "D4"), (quote!(crate::sdmmc::D4Pin), quote!(#[cfg(feature="sdmmc-rs")]))),
421 (("sdmmc", "D5"), (quote!(crate::sdmmc::D5Pin), quote!(#[cfg(feature="sdmmc-rs")]))),
422 (("sdmmc", "D6"), (quote!(crate::sdmmc::D6Pin), quote!(#[cfg(feature="sdmmc-rs")]))),
423 (("sdmmc", "D6"), (quote!(crate::sdmmc::D7Pin), quote!(#[cfg(feature="sdmmc-rs")]))),
424 (("sdmmc", "D8"), (quote!(crate::sdmmc::D8Pin), quote!(#[cfg(feature="sdmmc-rs")]))),
425 ].into();
426
427 for p in METADATA.peripherals {
428 if let Some(regs) = &p.registers {
429 for pin in p.pins {
430 let key = (regs.kind, pin.signal);
431 if let Some((tr, cfgs)) = signals.get(&key) {
432 let mut peri = format_ident!("{}", p.name);
433 let pin_name = format_ident!("{}", pin.pin);
434 let af = pin.af.unwrap_or(0);
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
446 g.extend(quote! {
447 #cfgs
448 pin_trait_impl!(#tr, #peri, #pin_name, #af);
449 })
450 }
451
452 // ADC is special
453 if regs.kind == "adc" {
454 let peri = format_ident!("{}", p.name);
455 let pin_name = format_ident!("{}", pin.pin);
456 let ch: u8 = pin.signal.strip_prefix("IN").unwrap().parse().unwrap();
457
458 g.extend(quote! {
459 impl_adc_pin!( #peri, #pin_name, #ch);
460 })
461 }
462
463 // DAC is special
464 if regs.kind == "dac" {
465 let peri = format_ident!("{}", p.name);
466 let pin_name = format_ident!("{}", pin.pin);
467 let ch: u8 = pin.signal.strip_prefix("OUT").unwrap().parse().unwrap();
468
469 g.extend(quote! {
470 impl_dac_pin!( #peri, #pin_name, #ch);
471 })
472 }
473 }
474 }
475 }
476
477 // ========
234 // Generate dma_trait_impl! 478 // Generate dma_trait_impl!
235 479
236 let signals: HashMap<_, _> = [ 480 let signals: HashMap<_, _> = [
diff --git a/embassy-stm32/src/adc/mod.rs b/embassy-stm32/src/adc/mod.rs
index d0fc188d5..86f33ca19 100644
--- a/embassy-stm32/src/adc/mod.rs
+++ b/embassy-stm32/src/adc/mod.rs
@@ -69,68 +69,14 @@ crate::pac::peripherals!(
69 }; 69 };
70); 70);
71 71
72macro_rules! impl_pin { 72macro_rules! impl_adc_pin {
73 ($inst:ident, $pin:ident, $ch:expr) => { 73 ($inst:ident, $pin:ident, $ch:expr) => {
74 impl AdcPin<peripherals::$inst> for peripherals::$pin {} 74 impl crate::adc::AdcPin<peripherals::$inst> for crate::peripherals::$pin {}
75 75
76 impl sealed::AdcPin<peripherals::$inst> for peripherals::$pin { 76 impl crate::adc::sealed::AdcPin<peripherals::$inst> for crate::peripherals::$pin {
77 fn channel(&self) -> u8 { 77 fn channel(&self) -> u8 {
78 $ch 78 $ch
79 } 79 }
80 } 80 }
81 }; 81 };
82} 82}
83
84crate::pac::peripheral_pins!(
85 ($inst:ident, adc, ADC, $pin:ident, IN0) => {
86 impl_pin!($inst, $pin, 0);
87 };
88 ($inst:ident, adc, ADC, $pin:ident, IN1) => {
89 impl_pin!($inst, $pin, 1);
90 };
91 ($inst:ident, adc, ADC, $pin:ident, IN2) => {
92 impl_pin!($inst, $pin, 2);
93 };
94 ($inst:ident, adc, ADC, $pin:ident, IN3) => {
95 impl_pin!($inst, $pin, 3);
96 };
97 ($inst:ident, adc, ADC, $pin:ident, IN4) => {
98 impl_pin!($inst, $pin, 4);
99 };
100 ($inst:ident, adc, ADC, $pin:ident, IN5) => {
101 impl_pin!($inst, $pin, 5);
102 };
103 ($inst:ident, adc, ADC, $pin:ident, IN6) => {
104 impl_pin!($inst, $pin, 6);
105 };
106 ($inst:ident, adc, ADC, $pin:ident, IN7) => {
107 impl_pin!($inst, $pin, 7);
108 };
109 ($inst:ident, adc, ADC, $pin:ident, IN8) => {
110 impl_pin!($inst, $pin, 8);
111 };
112 ($inst:ident, adc, ADC, $pin:ident, IN9) => {
113 impl_pin!($inst, $pin, 9);
114 };
115 ($inst:ident, adc, ADC, $pin:ident, IN10) => {
116 impl_pin!($inst, $pin, 10);
117 };
118 ($inst:ident, adc, ADC, $pin:ident, IN11) => {
119 impl_pin!($inst, $pin, 11);
120 };
121 ($inst:ident, adc, ADC, $pin:ident, IN12) => {
122 impl_pin!($inst, $pin, 12);
123 };
124 ($inst:ident, adc, ADC, $pin:ident, IN13) => {
125 impl_pin!($inst, $pin, 13);
126 };
127 ($inst:ident, adc, ADC, $pin:ident, IN14) => {
128 impl_pin!($inst, $pin, 14);
129 };
130 ($inst:ident, adc, ADC, $pin:ident, IN15) => {
131 impl_pin!($inst, $pin, 15);
132 };
133 ($inst:ident, adc, ADC, $pin:ident, IN16) => {
134 impl_pin!($inst, $pin, 16);
135 };
136);
diff --git a/embassy-stm32/src/can/bxcan.rs b/embassy-stm32/src/can/bxcan.rs
index 987ccad54..7fe0d1936 100644
--- a/embassy-stm32/src/can/bxcan.rs
+++ b/embassy-stm32/src/can/bxcan.rs
@@ -112,18 +112,3 @@ crate::pac::peripherals!(
112 112
113pin_trait!(RxPin, Instance); 113pin_trait!(RxPin, Instance);
114pin_trait!(TxPin, Instance); 114pin_trait!(TxPin, Instance);
115
116crate::pac::peripheral_pins!(
117 ($inst:ident, can, CAN, $pin:ident, TX, $af:expr) => {
118 pin_trait_impl!(TxPin, $inst, $pin, $af);
119 };
120 ($inst:ident, can, CAN, $pin:ident, RX, $af:expr) => {
121 pin_trait_impl!(RxPin, $inst, $pin, $af);
122 };
123 ($inst:ident, can, CAN, $pin:ident, TX) => {
124 pin_trait_impl!(TxPin, $inst, $pin, 0);
125 };
126 ($inst:ident, can, CAN, $pin:ident, RX) => {
127 pin_trait_impl!(RxPin, $inst, $pin, 0);
128 };
129);
diff --git a/embassy-stm32/src/dac/mod.rs b/embassy-stm32/src/dac/mod.rs
index 1acb0a9ae..7432c34a0 100644
--- a/embassy-stm32/src/dac/mod.rs
+++ b/embassy-stm32/src/dac/mod.rs
@@ -10,13 +10,11 @@ pub(crate) mod sealed {
10 pub trait Instance { 10 pub trait Instance {
11 fn regs() -> &'static crate::pac::dac::Dac; 11 fn regs() -> &'static crate::pac::dac::Dac;
12 } 12 }
13
14 pub trait DacPin<T: Instance, const C: u8>: crate::gpio::Pin {}
15} 13}
16 14
17pub trait Instance: sealed::Instance + 'static {} 15pub trait Instance: sealed::Instance + 'static {}
18 16
19pub trait DacPin<T: Instance, const C: u8>: sealed::DacPin<T, C> + 'static {} 17pub trait DacPin<T: Instance, const C: u8>: crate::gpio::Pin + 'static {}
20 18
21crate::pac::peripherals!( 19crate::pac::peripherals!(
22 (dac, $inst:ident) => { 20 (dac, $inst:ident) => {
@@ -30,19 +28,8 @@ crate::pac::peripherals!(
30 }; 28 };
31); 29);
32 30
33crate::pac::peripheral_pins!( 31macro_rules! impl_dac_pin {
34 ($inst:ident, dac, DAC, $pin:ident, OUT1) => { 32 ($inst:ident, $pin:ident, $ch:expr) => {
35 impl DacPin<peripherals::$inst, 1> for peripherals::$pin {} 33 impl crate::dac::DacPin<peripherals::$inst, $ch> for crate::peripherals::$pin {}
36
37 impl sealed::DacPin<peripherals::$inst, 1> for peripherals::$pin {
38 }
39
40 };
41
42 ($inst:ident, dac, DAC, $pin:ident, OUT2) => {
43 impl DacPin<peripherals::$inst, 2> for peripherals::$pin {}
44
45 impl sealed::DacPin<peripherals::$inst, 2> for peripherals::$pin {
46 }
47 }; 34 };
48); 35}
diff --git a/embassy-stm32/src/dcmi.rs b/embassy-stm32/src/dcmi.rs
index ff6f09701..9ac96c69a 100644
--- a/embassy-stm32/src/dcmi.rs
+++ b/embassy-stm32/src/dcmi.rs
@@ -481,57 +481,3 @@ crate::pac::interrupts! {
481} 481}
482 482
483dma_trait!(FrameDma, Instance); 483dma_trait!(FrameDma, Instance);
484
485crate::pac::peripheral_pins!(
486 ($inst:ident, dcmi, DCMI, $pin:ident, D0, $af:expr) => {
487 pin_trait_impl!(D0Pin, $inst, $pin, $af);
488 };
489 ($inst:ident, dcmi, DCMI, $pin:ident, D1, $af:expr) => {
490 pin_trait_impl!(D1Pin, $inst, $pin, $af);
491 };
492 ($inst:ident, dcmi, DCMI, $pin:ident, D2, $af:expr) => {
493 pin_trait_impl!(D2Pin, $inst, $pin, $af);
494 };
495 ($inst:ident, dcmi, DCMI, $pin:ident, D3, $af:expr) => {
496 pin_trait_impl!(D3Pin, $inst, $pin, $af);
497 };
498 ($inst:ident, dcmi, DCMI, $pin:ident, D4, $af:expr) => {
499 pin_trait_impl!(D4Pin, $inst, $pin, $af);
500 };
501 ($inst:ident, dcmi, DCMI, $pin:ident, D5, $af:expr) => {
502 pin_trait_impl!(D5Pin, $inst, $pin, $af);
503 };
504 ($inst:ident, dcmi, DCMI, $pin:ident, D6, $af:expr) => {
505 pin_trait_impl!(D6Pin, $inst, $pin, $af);
506 };
507 ($inst:ident, dcmi, DCMI, $pin:ident, D7, $af:expr) => {
508 pin_trait_impl!(D7Pin, $inst, $pin, $af);
509 };
510 ($inst:ident, dcmi, DCMI, $pin:ident, D8, $af:expr) => {
511 pin_trait_impl!(D8Pin, $inst, $pin, $af);
512 };
513 ($inst:ident, dcmi, DCMI, $pin:ident, D9, $af:expr) => {
514 pin_trait_impl!(D9Pin, $inst, $pin, $af);
515 };
516 ($inst:ident, dcmi, DCMI, $pin:ident, D10, $af:expr) => {
517 pin_trait_impl!(D10Pin, $inst, $pin, $af);
518 };
519 ($inst:ident, dcmi, DCMI, $pin:ident, D11, $af:expr) => {
520 pin_trait_impl!(D11Pin, $inst, $pin, $af);
521 };
522 ($inst:ident, dcmi, DCMI, $pin:ident, D12, $af:expr) => {
523 pin_trait_impl!(D12Pin, $inst, $pin, $af);
524 };
525 ($inst:ident, dcmi, DCMI, $pin:ident, D13, $af:expr) => {
526 pin_trait_impl!(D13Pin, $inst, $pin, $af);
527 };
528 ($inst:ident, dcmi, DCMI, $pin:ident, HSYNC, $af:expr) => {
529 pin_trait_impl!(HSyncPin, $inst, $pin, $af);
530 };
531 ($inst:ident, dcmi, DCMI, $pin:ident, VSYNC, $af:expr) => {
532 pin_trait_impl!(VSyncPin, $inst, $pin, $af);
533 };
534 ($inst:ident, dcmi, DCMI, $pin:ident, PIXCLK, $af:expr) => {
535 pin_trait_impl!(PixClkPin, $inst, $pin, $af);
536 };
537);
diff --git a/embassy-stm32/src/eth/mod.rs b/embassy-stm32/src/eth/mod.rs
index cf145e393..1e304b789 100644
--- a/embassy-stm32/src/eth/mod.rs
+++ b/embassy-stm32/src/eth/mod.rs
@@ -58,33 +58,3 @@ pin_trait!(RXD1Pin, Instance);
58pin_trait!(TXD0Pin, Instance); 58pin_trait!(TXD0Pin, Instance);
59pin_trait!(TXD1Pin, Instance); 59pin_trait!(TXD1Pin, Instance);
60pin_trait!(TXEnPin, Instance); 60pin_trait!(TXEnPin, Instance);
61
62crate::pac::peripheral_pins!(
63 ($inst:ident, eth, ETH, $pin:ident, REF_CLK, $af:expr) => {
64 pin_trait_impl!(RefClkPin, $inst, $pin, $af);
65 };
66 ($inst:ident, eth, ETH, $pin:ident, MDIO, $af:expr) => {
67 pin_trait_impl!(MDIOPin, $inst, $pin, $af);
68 };
69 ($inst:ident, eth, ETH, $pin:ident, MDC, $af:expr) => {
70 pin_trait_impl!(MDCPin, $inst, $pin, $af);
71 };
72 ($inst:ident, eth, ETH, $pin:ident, CRS_DV, $af:expr) => {
73 pin_trait_impl!(CRSPin, $inst, $pin, $af);
74 };
75 ($inst:ident, eth, ETH, $pin:ident, RXD0, $af:expr) => {
76 pin_trait_impl!(RXD0Pin, $inst, $pin, $af);
77 };
78 ($inst:ident, eth, ETH, $pin:ident, RXD1, $af:expr) => {
79 pin_trait_impl!(RXD1Pin, $inst, $pin, $af);
80 };
81 ($inst:ident, eth, ETH, $pin:ident, TXD0, $af:expr) => {
82 pin_trait_impl!(TXD0Pin, $inst, $pin, $af);
83 };
84 ($inst:ident, eth, ETH, $pin:ident, TXD1, $af:expr) => {
85 pin_trait_impl!(TXD1Pin, $inst, $pin, $af);
86 };
87 ($inst:ident, eth, ETH, $pin:ident, TX_EN, $af:expr) => {
88 pin_trait_impl!(TXEnPin, $inst, $pin, $af);
89 };
90);
diff --git a/embassy-stm32/src/fmc/pins.rs b/embassy-stm32/src/fmc/pins.rs
index e390ad176..5062e52ae 100644
--- a/embassy-stm32/src/fmc/pins.rs
+++ b/embassy-stm32/src/fmc/pins.rs
@@ -116,303 +116,3 @@ pin_trait!(A22Pin, Instance);
116pin_trait!(A23Pin, Instance); 116pin_trait!(A23Pin, Instance);
117pin_trait!(A24Pin, Instance); 117pin_trait!(A24Pin, Instance);
118pin_trait!(A25Pin, Instance); 118pin_trait!(A25Pin, Instance);
119
120crate::pac::peripheral_pins!(
121 ($inst:ident, fmc, FMC, $pin:ident, A0, $af:expr) => {
122 pin_trait_impl!(A0Pin, $inst, $pin, $af);
123 };
124 ($inst:ident, fmc, FMC, $pin:ident, A1, $af:expr) => {
125 pin_trait_impl!(A1Pin, $inst, $pin, $af);
126 };
127 ($inst:ident, fmc, FMC, $pin:ident, A2, $af:expr) => {
128 pin_trait_impl!(A2Pin, $inst, $pin, $af);
129 };
130 ($inst:ident, fmc, FMC, $pin:ident, A3, $af:expr) => {
131 pin_trait_impl!(A3Pin, $inst, $pin, $af);
132 };
133 ($inst:ident, fmc, FMC, $pin:ident, A4, $af:expr) => {
134 pin_trait_impl!(A4Pin, $inst, $pin, $af);
135 };
136 ($inst:ident, fmc, FMC, $pin:ident, A5, $af:expr) => {
137 pin_trait_impl!(A5Pin, $inst, $pin, $af);
138 };
139 ($inst:ident, fmc, FMC, $pin:ident, A6, $af:expr) => {
140 pin_trait_impl!(A6Pin, $inst, $pin, $af);
141 };
142 ($inst:ident, fmc, FMC, $pin:ident, A7, $af:expr) => {
143 pin_trait_impl!(A7Pin, $inst, $pin, $af);
144 };
145 ($inst:ident, fmc, FMC, $pin:ident, A8, $af:expr) => {
146 pin_trait_impl!(A8Pin, $inst, $pin, $af);
147 };
148 ($inst:ident, fmc, FMC, $pin:ident, A9, $af:expr) => {
149 pin_trait_impl!(A9Pin, $inst, $pin, $af);
150 };
151 ($inst:ident, fmc, FMC, $pin:ident, A10, $af:expr) => {
152 pin_trait_impl!(A10Pin, $inst, $pin, $af);
153 };
154 ($inst:ident, fmc, FMC, $pin:ident, A11, $af:expr) => {
155 pin_trait_impl!(A11Pin, $inst, $pin, $af);
156 };
157 ($inst:ident, fmc, FMC, $pin:ident, A12, $af:expr) => {
158 pin_trait_impl!(A12Pin, $inst, $pin, $af);
159 };
160 ($inst:ident, fmc, FMC, $pin:ident, A13, $af:expr) => {
161 pin_trait_impl!(A13Pin, $inst, $pin, $af);
162 };
163 ($inst:ident, fmc, FMC, $pin:ident, A14, $af:expr) => {
164 pin_trait_impl!(A14Pin, $inst, $pin, $af);
165 };
166 ($inst:ident, fmc, FMC, $pin:ident, A15, $af:expr) => {
167 pin_trait_impl!(A15Pin, $inst, $pin, $af);
168 };
169 ($inst:ident, fmc, FMC, $pin:ident, A16, $af:expr) => {
170 pin_trait_impl!(A16Pin, $inst, $pin, $af);
171 };
172 ($inst:ident, fmc, FMC, $pin:ident, A17, $af:expr) => {
173 pin_trait_impl!(A17Pin, $inst, $pin, $af);
174 };
175 ($inst:ident, fmc, FMC, $pin:ident, A18, $af:expr) => {
176 pin_trait_impl!(A18Pin, $inst, $pin, $af);
177 };
178 ($inst:ident, fmc, FMC, $pin:ident, A19, $af:expr) => {
179 pin_trait_impl!(A19Pin, $inst, $pin, $af);
180 };
181 ($inst:ident, fmc, FMC, $pin:ident, A20, $af:expr) => {
182 pin_trait_impl!(A20Pin, $inst, $pin, $af);
183 };
184 ($inst:ident, fmc, FMC, $pin:ident, A21, $af:expr) => {
185 pin_trait_impl!(A21Pin, $inst, $pin, $af);
186 };
187 ($inst:ident, fmc, FMC, $pin:ident, A22, $af:expr) => {
188 pin_trait_impl!(A22Pin, $inst, $pin, $af);
189 };
190 ($inst:ident, fmc, FMC, $pin:ident, A23, $af:expr) => {
191 pin_trait_impl!(A23Pin, $inst, $pin, $af);
192 };
193 ($inst:ident, fmc, FMC, $pin:ident, A24, $af:expr) => {
194 pin_trait_impl!(A24Pin, $inst, $pin, $af);
195 };
196 ($inst:ident, fmc, FMC, $pin:ident, A25, $af:expr) => {
197 pin_trait_impl!(A25Pin, $inst, $pin, $af);
198 };
199 ($inst:ident, fmc, FMC, $pin:ident, D0, $af:expr) => {
200 pin_trait_impl!(D0Pin, $inst, $pin, $af);
201 };
202 ($inst:ident, fmc, FMC, $pin:ident, D1, $af:expr) => {
203 pin_trait_impl!(D1Pin, $inst, $pin, $af);
204 };
205 ($inst:ident, fmc, FMC, $pin:ident, D2, $af:expr) => {
206 pin_trait_impl!(D2Pin, $inst, $pin, $af);
207 };
208 ($inst:ident, fmc, FMC, $pin:ident, D3, $af:expr) => {
209 pin_trait_impl!(D3Pin, $inst, $pin, $af);
210 };
211 ($inst:ident, fmc, FMC, $pin:ident, D4, $af:expr) => {
212 pin_trait_impl!(D4Pin, $inst, $pin, $af);
213 };
214 ($inst:ident, fmc, FMC, $pin:ident, D5, $af:expr) => {
215 pin_trait_impl!(D5Pin, $inst, $pin, $af);
216 };
217 ($inst:ident, fmc, FMC, $pin:ident, D6, $af:expr) => {
218 pin_trait_impl!(D6Pin, $inst, $pin, $af);
219 };
220 ($inst:ident, fmc, FMC, $pin:ident, D7, $af:expr) => {
221 pin_trait_impl!(D7Pin, $inst, $pin, $af);
222 };
223 ($inst:ident, fmc, FMC, $pin:ident, D8, $af:expr) => {
224 pin_trait_impl!(D8Pin, $inst, $pin, $af);
225 };
226 ($inst:ident, fmc, FMC, $pin:ident, D9, $af:expr) => {
227 pin_trait_impl!(D9Pin, $inst, $pin, $af);
228 };
229 ($inst:ident, fmc, FMC, $pin:ident, D10, $af:expr) => {
230 pin_trait_impl!(D10Pin, $inst, $pin, $af);
231 };
232 ($inst:ident, fmc, FMC, $pin:ident, D11, $af:expr) => {
233 pin_trait_impl!(D11Pin, $inst, $pin, $af);
234 };
235 ($inst:ident, fmc, FMC, $pin:ident, D12, $af:expr) => {
236 pin_trait_impl!(D12Pin, $inst, $pin, $af);
237 };
238 ($inst:ident, fmc, FMC, $pin:ident, D13, $af:expr) => {
239 pin_trait_impl!(D13Pin, $inst, $pin, $af);
240 };
241 ($inst:ident, fmc, FMC, $pin:ident, D14, $af:expr) => {
242 pin_trait_impl!(D14Pin, $inst, $pin, $af);
243 };
244 ($inst:ident, fmc, FMC, $pin:ident, D15, $af:expr) => {
245 pin_trait_impl!(D15Pin, $inst, $pin, $af);
246 };
247 ($inst:ident, fmc, FMC, $pin:ident, D16, $af:expr) => {
248 pin_trait_impl!(D16Pin, $inst, $pin, $af);
249 };
250 ($inst:ident, fmc, FMC, $pin:ident, D17, $af:expr) => {
251 pin_trait_impl!(D17Pin, $inst, $pin, $af);
252 };
253 ($inst:ident, fmc, FMC, $pin:ident, D18, $af:expr) => {
254 pin_trait_impl!(D18Pin, $inst, $pin, $af);
255 };
256 ($inst:ident, fmc, FMC, $pin:ident, D19, $af:expr) => {
257 pin_trait_impl!(D19Pin, $inst, $pin, $af);
258 };
259 ($inst:ident, fmc, FMC, $pin:ident, D20, $af:expr) => {
260 pin_trait_impl!(D20Pin, $inst, $pin, $af);
261 };
262 ($inst:ident, fmc, FMC, $pin:ident, D21, $af:expr) => {
263 pin_trait_impl!(D21Pin, $inst, $pin, $af);
264 };
265 ($inst:ident, fmc, FMC, $pin:ident, D22, $af:expr) => {
266 pin_trait_impl!(D22Pin, $inst, $pin, $af);
267 };
268 ($inst:ident, fmc, FMC, $pin:ident, D23, $af:expr) => {
269 pin_trait_impl!(D23Pin, $inst, $pin, $af);
270 };
271 ($inst:ident, fmc, FMC, $pin:ident, D24, $af:expr) => {
272 pin_trait_impl!(D24Pin, $inst, $pin, $af);
273 };
274 ($inst:ident, fmc, FMC, $pin:ident, D25, $af:expr) => {
275 pin_trait_impl!(D25Pin, $inst, $pin, $af);
276 };
277 ($inst:ident, fmc, FMC, $pin:ident, D26, $af:expr) => {
278 pin_trait_impl!(D26Pin, $inst, $pin, $af);
279 };
280 ($inst:ident, fmc, FMC, $pin:ident, D27, $af:expr) => {
281 pin_trait_impl!(D27Pin, $inst, $pin, $af);
282 };
283 ($inst:ident, fmc, FMC, $pin:ident, D28, $af:expr) => {
284 pin_trait_impl!(D28Pin, $inst, $pin, $af);
285 };
286 ($inst:ident, fmc, FMC, $pin:ident, D29, $af:expr) => {
287 pin_trait_impl!(D29Pin, $inst, $pin, $af);
288 };
289 ($inst:ident, fmc, FMC, $pin:ident, D30, $af:expr) => {
290 pin_trait_impl!(D30Pin, $inst, $pin, $af);
291 };
292 ($inst:ident, fmc, FMC, $pin:ident, D31, $af:expr) => {
293 pin_trait_impl!(D31Pin, $inst, $pin, $af);
294 };
295 ($inst:ident, fmc, FMC, $pin:ident, DA0, $af:expr) => {
296 pin_trait_impl!(DA0Pin, $inst, $pin, $af);
297 };
298 ($inst:ident, fmc, FMC, $pin:ident, DA1, $af:expr) => {
299 pin_trait_impl!(DA1Pin, $inst, $pin, $af);
300 };
301 ($inst:ident, fmc, FMC, $pin:ident, DA2, $af:expr) => {
302 pin_trait_impl!(DA2Pin, $inst, $pin, $af);
303 };
304 ($inst:ident, fmc, FMC, $pin:ident, DA3, $af:expr) => {
305 pin_trait_impl!(DA3Pin, $inst, $pin, $af);
306 };
307 ($inst:ident, fmc, FMC, $pin:ident, DA4, $af:expr) => {
308 pin_trait_impl!(DA4Pin, $inst, $pin, $af);
309 };
310 ($inst:ident, fmc, FMC, $pin:ident, DA5, $af:expr) => {
311 pin_trait_impl!(DA5Pin, $inst, $pin, $af);
312 };
313 ($inst:ident, fmc, FMC, $pin:ident, DA6, $af:expr) => {
314 pin_trait_impl!(DA6Pin, $inst, $pin, $af);
315 };
316 ($inst:ident, fmc, FMC, $pin:ident, DA7, $af:expr) => {
317 pin_trait_impl!(DA7Pin, $inst, $pin, $af);
318 };
319 ($inst:ident, fmc, FMC, $pin:ident, DA8, $af:expr) => {
320 pin_trait_impl!(DA8Pin, $inst, $pin, $af);
321 };
322 ($inst:ident, fmc, FMC, $pin:ident, DA9, $af:expr) => {
323 pin_trait_impl!(DA9Pin, $inst, $pin, $af);
324 };
325 ($inst:ident, fmc, FMC, $pin:ident, DA10, $af:expr) => {
326 pin_trait_impl!(DA10Pin, $inst, $pin, $af);
327 };
328 ($inst:ident, fmc, FMC, $pin:ident, DA11, $af:expr) => {
329 pin_trait_impl!(DA11Pin, $inst, $pin, $af);
330 };
331 ($inst:ident, fmc, FMC, $pin:ident, DA12, $af:expr) => {
332 pin_trait_impl!(DA12Pin, $inst, $pin, $af);
333 };
334 ($inst:ident, fmc, FMC, $pin:ident, DA13, $af:expr) => {
335 pin_trait_impl!(DA13Pin, $inst, $pin, $af);
336 };
337 ($inst:ident, fmc, FMC, $pin:ident, DA14, $af:expr) => {
338 pin_trait_impl!(DA14Pin, $inst, $pin, $af);
339 };
340 ($inst:ident, fmc, FMC, $pin:ident, DA15, $af:expr) => {
341 pin_trait_impl!(DA15Pin, $inst, $pin, $af);
342 };
343 ($inst:ident, fmc, FMC, $pin:ident, SDNWE, $af:expr) => {
344 pin_trait_impl!(SDNWEPin, $inst, $pin, $af);
345 };
346 ($inst:ident, fmc, FMC, $pin:ident, SDNCAS, $af:expr) => {
347 pin_trait_impl!(SDNCASPin, $inst, $pin, $af);
348 };
349 ($inst:ident, fmc, FMC, $pin:ident, SDNRAS, $af:expr) => {
350 pin_trait_impl!(SDNRASPin, $inst, $pin, $af);
351 };
352 ($inst:ident, fmc, FMC, $pin:ident, SDNE0, $af:expr) => {
353 pin_trait_impl!(SDNE0Pin, $inst, $pin, $af);
354 };
355 ($inst:ident, fmc, FMC, $pin:ident, SDNE1, $af:expr) => {
356 pin_trait_impl!(SDNE1Pin, $inst, $pin, $af);
357 };
358 ($inst:ident, fmc, FMC, $pin:ident, SDCKE0, $af:expr) => {
359 pin_trait_impl!(SDCKE0Pin, $inst, $pin, $af);
360 };
361 ($inst:ident, fmc, FMC, $pin:ident, SDCKE1, $af:expr) => {
362 pin_trait_impl!(SDCKE1Pin, $inst, $pin, $af);
363 };
364 ($inst:ident, fmc, FMC, $pin:ident, SDCLK, $af:expr) => {
365 pin_trait_impl!(SDCLKPin, $inst, $pin, $af);
366 };
367 ($inst:ident, fmc, FMC, $pin:ident, NBL0, $af:expr) => {
368 pin_trait_impl!(NBL0Pin, $inst, $pin, $af);
369 };
370 ($inst:ident, fmc, FMC, $pin:ident, NBL1, $af:expr) => {
371 pin_trait_impl!(NBL1Pin, $inst, $pin, $af);
372 };
373 ($inst:ident, fmc, FMC, $pin:ident, NBL2, $af:expr) => {
374 pin_trait_impl!(NBL2Pin, $inst, $pin, $af);
375 };
376 ($inst:ident, fmc, FMC, $pin:ident, NBL3, $af:expr) => {
377 pin_trait_impl!(NBL3Pin, $inst, $pin, $af);
378 };
379 ($inst:ident, fmc, FMC, $pin:ident, INT, $af:expr) => {
380 pin_trait_impl!(INTPin, $inst, $pin, $af);
381 };
382 ($inst:ident, fmc, FMC, $pin:ident, NL, $af:expr) => {
383 pin_trait_impl!(NLPin, $inst, $pin, $af);
384 };
385 ($inst:ident, fmc, FMC, $pin:ident, NWAIT, $af:expr) => {
386 pin_trait_impl!(NWaitPin, $inst, $pin, $af);
387 };
388 ($inst:ident, fmc, FMC, $pin:ident, NE1, $af:expr) => {
389 pin_trait_impl!(NE1Pin, $inst, $pin, $af);
390 };
391 ($inst:ident, fmc, FMC, $pin:ident, NE2, $af:expr) => {
392 pin_trait_impl!(NE2Pin, $inst, $pin, $af);
393 };
394 ($inst:ident, fmc, FMC, $pin:ident, NE3, $af:expr) => {
395 pin_trait_impl!(NE3Pin, $inst, $pin, $af);
396 };
397 ($inst:ident, fmc, FMC, $pin:ident, NE4, $af:expr) => {
398 pin_trait_impl!(NE4Pin, $inst, $pin, $af);
399 };
400 ($inst:ident, fmc, FMC, $pin:ident, NCE, $af:expr) => {
401 pin_trait_impl!(NCEPin, $inst, $pin, $af);
402 };
403 ($inst:ident, fmc, FMC, $pin:ident, NOE, $af:expr) => {
404 pin_trait_impl!(NOEPin, $inst, $pin, $af);
405 };
406 ($inst:ident, fmc, FMC, $pin:ident, NWE, $af:expr) => {
407 pin_trait_impl!(NWEPin, $inst, $pin, $af);
408 };
409 ($inst:ident, fmc, FMC, $pin:ident, Clk, $af:expr) => {
410 pin_trait_impl!(ClkPin, $inst, $pin, $af);
411 };
412 ($inst:ident, fmc, FMC, $pin:ident, BA0, $af:expr) => {
413 pin_trait_impl!(BA0Pin, $inst, $pin, $af);
414 };
415 ($inst:ident, fmc, FMC, $pin:ident, BA1, $af:expr) => {
416 pin_trait_impl!(BA1Pin, $inst, $pin, $af);
417 };
418);
diff --git a/embassy-stm32/src/i2c/mod.rs b/embassy-stm32/src/i2c/mod.rs
index ff13d9f1f..aad1c1375 100644
--- a/embassy-stm32/src/i2c/mod.rs
+++ b/embassy-stm32/src/i2c/mod.rs
@@ -71,23 +71,3 @@ crate::pac::interrupts!(
71 } 71 }
72 }; 72 };
73); 73);
74
75#[cfg(not(rcc_f1))]
76crate::pac::peripheral_pins!(
77 ($inst:ident, i2c, I2C, $pin:ident, SDA, $af:expr) => {
78 pin_trait_impl!(SdaPin, $inst, $pin, $af);
79 };
80 ($inst:ident, i2c, I2C, $pin:ident, SCL, $af:expr) => {
81 pin_trait_impl!(SclPin, $inst, $pin, $af);
82 };
83);
84
85#[cfg(rcc_f1)]
86crate::pac::peripheral_pins!(
87 ($inst:ident, i2c, I2C, $pin:ident, SDA) => {
88 pin_trait_impl!(SdaPin, $inst, $pin, 0);
89 };
90 ($inst:ident, i2c, I2C, $pin:ident, SCL) => {
91 pin_trait_impl!(SdaPin, $inst, $pin, 0);
92 };
93);
diff --git a/embassy-stm32/src/pwm/mod.rs b/embassy-stm32/src/pwm/mod.rs
index 7b41e8a56..edc34fa5c 100644
--- a/embassy-stm32/src/pwm/mod.rs
+++ b/embassy-stm32/src/pwm/mod.rs
@@ -258,51 +258,3 @@ pin_trait!(BreakInputComparator2Pin, CaptureCompare16bitInstance);
258pin_trait!(BreakInput2Pin, CaptureCompare16bitInstance); 258pin_trait!(BreakInput2Pin, CaptureCompare16bitInstance);
259pin_trait!(BreakInput2Comparator1Pin, CaptureCompare16bitInstance); 259pin_trait!(BreakInput2Comparator1Pin, CaptureCompare16bitInstance);
260pin_trait!(BreakInput2Comparator2Pin, CaptureCompare16bitInstance); 260pin_trait!(BreakInput2Comparator2Pin, CaptureCompare16bitInstance);
261
262crate::pac::peripheral_pins!(
263 ($inst:ident, timer, $block:ident, $pin:ident, CH1, $af:expr) => {
264 pin_trait_impl!(Channel1Pin, $inst, $pin, $af);
265 };
266 ($inst:ident, timer, $block:ident, $pin:ident, CH1N, $af:expr) => {
267 pin_trait_impl!(Channel1ComplementaryPin, $inst, $pin, $af);
268 };
269 ($inst:ident, timer, $block:ident, $pin:ident, CH2, $af:expr) => {
270 pin_trait_impl!(Channel2Pin, $inst, $pin, $af);
271 };
272 ($inst:ident, timer, $block:ident, $pin:ident, CH2N, $af:expr) => {
273 pin_trait_impl!(Channel2ComplementaryPin, $inst, $pin, $af);
274 };
275 ($inst:ident, timer, $block:ident, $pin:ident, CH3, $af:expr) => {
276 pin_trait_impl!(Channel3Pin, $inst, $pin, $af);
277 };
278 ($inst:ident, timer, $block:ident, $pin:ident, CH3N, $af:expr) => {
279 pin_trait_impl!(Channel3ComplementaryPin, $inst, $pin, $af);
280 };
281 ($inst:ident, timer, $block:ident, $pin:ident, CH4, $af:expr) => {
282 pin_trait_impl!(Channel4Pin, $inst, $pin, $af);
283 };
284 ($inst:ident, timer, $block:ident, $pin:ident, CH4N, $af:expr) => {
285 pin_trait_impl!(Channel4ComplementaryPin, $inst, $pin, $af);
286 };
287 ($inst:ident, timer, $block:ident, $pin:ident, ETR, $af:expr) => {
288 pin_trait_impl!(ExternalTriggerPin, $inst, $pin, $af);
289 };
290 ($inst:ident, timer, $block:ident, $pin:ident, BKIN, $af:expr) => {
291 pin_trait_impl!(BreakInputPin, $inst, $pin, $af);
292 };
293 ($inst:ident, timer, $block:ident, $pin:ident, BKIN_COMP1, $af:expr) => {
294 pin_trait_impl!(BreakInputComparator1Pin, $inst, $pin, $af);
295 };
296 ($inst:ident, timer, $block:ident, $pin:ident, BKIN_COMP2, $af:expr) => {
297 pin_trait_impl!(BreakInputComparator2Pin, $inst, $pin, $af);
298 };
299 ($inst:ident, timer, $block:ident, $pin:ident, BKIN2, $af:expr) => {
300 pin_trait_impl!(BreakInput2Pin, $inst, $pin, $af);
301 };
302 ($inst:ident, timer, $block:ident, $pin:ident, BKIN2_COMP1, $af:expr) => {
303 pin_trait_impl!(BreakInput2Comparator1Pin, $inst, $pin, $af);
304 };
305 ($inst:ident, timer, $block:ident, $pin:ident, BKIN2_COMP2, $af:expr) => {
306 pin_trait_impl!(BreakInput2Comparator2Pin, $inst, $pin, $af);
307 };
308);
diff --git a/embassy-stm32/src/rcc/h7.rs b/embassy-stm32/src/rcc/h7.rs
index 1b2c595b3..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!(McoPin, MCO1, $pin, $af);
354 };
355 ($inst:ident, rcc, RCC, $pin:ident, MCO_2, $af:expr) => {
356 pin_trait_impl!(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}
diff --git a/embassy-stm32/src/sdmmc/v2.rs b/embassy-stm32/src/sdmmc/v2.rs
index 733b8fdd9..77a7c28cd 100644
--- a/embassy-stm32/src/sdmmc/v2.rs
+++ b/embassy-stm32/src/sdmmc/v2.rs
@@ -1460,42 +1460,6 @@ crate::pac::peripherals!(
1460 }; 1460 };
1461); 1461);
1462 1462
1463crate::pac::peripheral_pins!(
1464 ($inst:ident, sdmmc, SDMMC, $pin:ident, CK, $af:expr) => {
1465 pin_trait_impl!(CkPin, $inst, $pin, $af);
1466 };
1467 ($inst:ident, sdmmc, SDMMC, $pin:ident, CMD, $af:expr) => {
1468 pin_trait_impl!(CmdPin, $inst, $pin, $af);
1469 };
1470 ($inst:ident, sdmmc, SDMMC, $pin:ident, D0, $af:expr) => {
1471 pin_trait_impl!(D0Pin, $inst, $pin, $af);
1472 };
1473 ($inst:ident, sdmmc, SDMMC, $pin:ident, D1, $af:expr) => {
1474 pin_trait_impl!(D1Pin, $inst, $pin, $af);
1475 };
1476 ($inst:ident, sdmmc, SDMMC, $pin:ident, D2, $af:expr) => {
1477 pin_trait_impl!(D2Pin, $inst, $pin, $af);
1478 };
1479 ($inst:ident, sdmmc, SDMMC, $pin:ident, D3, $af:expr) => {
1480 pin_trait_impl!(D3Pin, $inst, $pin, $af);
1481 };
1482 ($inst:ident, sdmmc, SDMMC, $pin:ident, D4, $af:expr) => {
1483 pin_trait_impl!(D4Pin, $inst, $pin, $af);
1484 };
1485 ($inst:ident, sdmmc, SDMMC, $pin:ident, D5, $af:expr) => {
1486 pin_trait_impl!(D5Pin, $inst, $pin, $af);
1487 };
1488 ($inst:ident, sdmmc, SDMMC, $pin:ident, D6, $af:expr) => {
1489 pin_trait_impl!(D6Pin, $inst, $pin, $af);
1490 };
1491 ($inst:ident, sdmmc, SDMMC, $pin:ident, D6, $af:expr) => {
1492 pin_trait_impl!(D7Pin, $inst, $pin, $af);
1493 };
1494 ($inst:ident, sdmmc, SDMMC, $pin:ident, D8, $af:expr) => {
1495 pin_trait_impl!(D8Pin, $inst, $pin, $af);
1496 };
1497);
1498
1499#[cfg(feature = "sdmmc-rs")] 1463#[cfg(feature = "sdmmc-rs")]
1500mod sdmmc_rs { 1464mod sdmmc_rs {
1501 use super::*; 1465 use super::*;
diff --git a/embassy-stm32/src/spi/mod.rs b/embassy-stm32/src/spi/mod.rs
index e91241e97..91420375b 100644
--- a/embassy-stm32/src/spi/mod.rs
+++ b/embassy-stm32/src/spi/mod.rs
@@ -885,29 +885,3 @@ crate::pac::peripherals!(
885 impl Instance for peripherals::$inst {} 885 impl Instance for peripherals::$inst {}
886 }; 886 };
887); 887);
888
889#[cfg(not(rcc_f1))]
890crate::pac::peripheral_pins!(
891 ($inst:ident, spi, SPI, $pin:ident, SCK, $af:expr) => {
892 pin_trait_impl!(SckPin, $inst, $pin, $af);
893 };
894 ($inst:ident, spi, SPI, $pin:ident, MOSI, $af:expr) => {
895 pin_trait_impl!(MosiPin, $inst, $pin, $af);
896 };
897 ($inst:ident, spi, SPI, $pin:ident, MISO, $af:expr) => {
898 pin_trait_impl!(MisoPin, $inst, $pin, $af);
899 };
900);
901
902#[cfg(rcc_f1)]
903crate::pac::peripheral_pins!(
904 ($inst:ident, spi, SPI, $pin:ident, SCK) => {
905 pin_trait_impl!(SckPin, $inst, $pin, 0);
906 };
907 ($inst:ident, spi, SPI, $pin:ident, MOSI) => {
908 pin_trait_impl!(MosiPin, $inst, $pin, 0);
909 };
910 ($inst:ident, spi, SPI, $pin:ident, MISO) => {
911 pin_trait_impl!(MisoPin, $inst, $pin, 0);
912 };
913);
diff --git a/embassy-stm32/src/traits.rs b/embassy-stm32/src/traits.rs
index e006e31ac..c733f4226 100644
--- a/embassy-stm32/src/traits.rs
+++ b/embassy-stm32/src/traits.rs
@@ -9,8 +9,8 @@ macro_rules! pin_trait {
9} 9}
10 10
11macro_rules! pin_trait_impl { 11macro_rules! pin_trait_impl {
12 ($signal:ident, $instance:ident, $pin:ident, $af:expr) => { 12 (crate::$mod:ident::$trait:ident, $instance:ident, $pin:ident, $af:expr) => {
13 impl $signal<crate::peripherals::$instance> for crate::peripherals::$pin { 13 impl crate::$mod::$trait<crate::peripherals::$instance> for crate::peripherals::$pin {
14 fn af_num(&self) -> u8 { 14 fn af_num(&self) -> u8 {
15 $af 15 $af
16 } 16 }
diff --git a/embassy-stm32/src/usart/mod.rs b/embassy-stm32/src/usart/mod.rs
index 52c2cd84f..33b3a7b2e 100644
--- a/embassy-stm32/src/usart/mod.rs
+++ b/embassy-stm32/src/usart/mod.rs
@@ -636,79 +636,3 @@ crate::pac::interrupts!(
636 } 636 }
637 }; 637 };
638); 638);
639
640#[cfg(not(rcc_f1))]
641crate::pac::peripheral_pins!(
642
643 // USART
644 ($inst:ident, usart, USART, $pin:ident, TX, $af:expr) => {
645 pin_trait_impl!(TxPin, $inst, $pin, $af);
646 };
647 ($inst:ident, usart, USART, $pin:ident, RX, $af:expr) => {
648 pin_trait_impl!(RxPin, $inst, $pin, $af);
649 };
650 ($inst:ident, usart, USART, $pin:ident, CTS, $af:expr) => {
651 pin_trait_impl!(CtsPin, $inst, $pin, $af);
652 };
653 ($inst:ident, usart, USART, $pin:ident, RTS, $af:expr) => {
654 pin_trait_impl!(RtsPin, $inst, $pin, $af);
655 };
656 ($inst:ident, usart, USART, $pin:ident, CK, $af:expr) => {
657 pin_trait_impl!(CkPin, $inst, $pin, $af);
658 };
659
660 // UART
661 ($inst:ident, usart, UART, $pin:ident, TX, $af:expr) => {
662 pin_trait_impl!(TxPin, $inst, $pin, $af);
663 };
664 ($inst:ident, usart, UART, $pin:ident, RX, $af:expr) => {
665 pin_trait_impl!(RxPin, $inst, $pin, $af);
666 };
667 ($inst:ident, usart, UART, $pin:ident, CTS, $af:expr) => {
668 pin_trait_impl!(CtsPin, $inst, $pin, $af);
669 };
670 ($inst:ident, usart, UART, $pin:ident, RTS, $af:expr) => {
671 pin_trait_impl!(RtsPin, $inst, $pin, $af);
672 };
673 ($inst:ident, usart, UART, $pin:ident, CK, $af:expr) => {
674 pin_trait_impl!(CkPin, $inst, $pin, $af);
675 };
676);
677
678#[cfg(rcc_f1)]
679crate::pac::peripheral_pins!(
680
681 // USART
682 ($inst:ident, usart, USART, $pin:ident, TX) => {
683 pin_trait_impl!(TxPin, $inst, $pin, 0);
684 };
685 ($inst:ident, usart, USART, $pin:ident, RX) => {
686 pin_trait_impl!(RxPin, $inst, $pin, 0);
687 };
688 ($inst:ident, usart, USART, $pin:ident, CTS) => {
689 pin_trait_impl!(CtsPin, $inst, $pin, 0);
690 };
691 ($inst:ident, usart, USART, $pin:ident, RTS) => {
692 pin_trait_impl!(RtsPin, $inst, $pin, 0);
693 };
694 ($inst:ident, usart, USART, $pin:ident, CK) => {
695 pin_trait_impl!(CkPin, $inst, $pin, 0);
696 };
697
698 // UART
699 ($inst:ident, usart, UART, $pin:ident, TX) => {
700 pin_trait_impl!(TxPin, $inst, $pin, 0);
701 };
702 ($inst:ident, usart, UART, $pin:ident, RX) => {
703 pin_trait_impl!(RxPin, $inst, $pin, 0);
704 };
705 ($inst:ident, usart, UART, $pin:ident, CTS) => {
706 pin_trait_impl!(CtsPin, $inst, $pin, 0);
707 };
708 ($inst:ident, usart, UART, $pin:ident, RTS) => {
709 pin_trait_impl!(RtsPin, $inst, $pin, 0);
710 };
711 ($inst:ident, usart, UART, $pin:ident, CK) => {
712 pin_trait_impl!(CkPin, $inst, $pin, 0);
713 };
714);
diff --git a/embassy-stm32/src/usb_otg.rs b/embassy-stm32/src/usb_otg.rs
index bdce6f44b..6e08815d0 100644
--- a/embassy-stm32/src/usb_otg.rs
+++ b/embassy-stm32/src/usb_otg.rs
@@ -231,59 +231,3 @@ crate::pac::interrupts!(
231 unsafe impl USBInterrupt for crate::interrupt::$irq {} 231 unsafe impl USBInterrupt for crate::interrupt::$irq {}
232 }; 232 };
233); 233);
234
235crate::pac::peripheral_pins!(
236 // FS internal phy pins
237 ($inst:ident, otgfs, OTG_FS, $pin:ident, DP, $af:expr) => {
238 pin_trait_impl!(DpPin, $inst, $pin, $af);
239 };
240 ($inst:ident, otgfs, OTG_FS, $pin:ident, DM, $af:expr) => {
241 pin_trait_impl!(DmPin, $inst, $pin, $af);
242 };
243
244 // HS internal phy pins
245 ($inst:ident, otghs, OTG_HS, $pin:ident, DP, $af:expr) => {
246 pin_trait_impl!(DpPin, $inst, $pin, $af);
247 };
248 ($inst:ident, otghs, OTG_HS, $pin:ident, DM, $af:expr) => {
249 pin_trait_impl!(DmPin, $inst, $pin, $af);
250 };
251
252 // HS external phy pins
253 ($inst:ident, otghs, OTG_HS, $pin:ident, ULPI_CK, $af:expr) => {
254 pin_trait_impl!(UlpiClkPin, $inst, $pin, $af);
255 };
256 ($inst:ident, otghs, OTG_HS, $pin:ident, ULPI_DIR, $af:expr) => {
257 pin_trait_impl!(UlpiDirPin, $inst, $pin, $af);
258 };
259 ($inst:ident, otghs, OTG_HS, $pin:ident, ULPI_NXT, $af:expr) => {
260 pin_trait_impl!(UlpiNxtPin, $inst, $pin, $af);
261 };
262 ($inst:ident, otghs, OTG_HS, $pin:ident, ULPI_STP, $af:expr) => {
263 pin_trait_impl!(UlpiStpPin, $inst, $pin, $af);
264 };
265 ($inst:ident, otghs, OTG_HS, $pin:ident, ULPI_D0, $af:expr) => {
266 pin_trait_impl!(UlpiD0Pin, $inst, $pin, $af);
267 };
268 ($inst:ident, otghs, OTG_HS, $pin:ident, ULPI_D1, $af:expr) => {
269 pin_trait_impl!(UlpiD1Pin, $inst, $pin, $af);
270 };
271 ($inst:ident, otghs, OTG_HS, $pin:ident, ULPI_D2, $af:expr) => {
272 pin_trait_impl!(UlpiD2Pin, $inst, $pin, $af);
273 };
274 ($inst:ident, otghs, OTG_HS, $pin:ident, ULPI_D3, $af:expr) => {
275 pin_trait_impl!(UlpiD3Pin, $inst, $pin, $af);
276 };
277 ($inst:ident, otghs, OTG_HS, $pin:ident, ULPI_D4, $af:expr) => {
278 pin_trait_impl!(UlpiD4Pin, $inst, $pin, $af);
279 };
280 ($inst:ident, otghs, OTG_HS, $pin:ident, ULPI_D5, $af:expr) => {
281 pin_trait_impl!(UlpiD5Pin, $inst, $pin, $af);
282 };
283 ($inst:ident, otghs, OTG_HS, $pin:ident, ULPI_D6, $af:expr) => {
284 pin_trait_impl!(UlpiD6Pin, $inst, $pin, $af);
285 };
286 ($inst:ident, otghs, OTG_HS, $pin:ident, ULPI_D7, $af:expr) => {
287 pin_trait_impl!(UlpiD7Pin, $inst, $pin, $af);
288 };
289);
diff --git a/stm32-metapac-gen/src/assets/metadata.rs b/stm32-metapac-gen/src/assets/metadata.rs
index 7fe49ceba..150aa5956 100644
--- a/stm32-metapac-gen/src/assets/metadata.rs
+++ b/stm32-metapac-gen/src/assets/metadata.rs
@@ -76,7 +76,7 @@ pub struct PeripheralRccRegister {
76pub struct PeripheralPin { 76pub struct PeripheralPin {
77 pub pin: &'static str, 77 pub pin: &'static str,
78 pub signal: &'static str, 78 pub signal: &'static str,
79 pub af: Option<&'static str>, 79 pub af: Option<u8>,
80} 80}
81 81
82#[derive(Debug, Eq, PartialEq, Clone)] 82#[derive(Debug, Eq, PartialEq, Clone)]
diff --git a/stm32-metapac-gen/src/data.rs b/stm32-metapac-gen/src/data.rs
index 9bb4e191d..24f0bcf0d 100644
--- a/stm32-metapac-gen/src/data.rs
+++ b/stm32-metapac-gen/src/data.rs
@@ -87,7 +87,7 @@ pub struct PeripheralRccRegister {
87pub struct PeripheralPin { 87pub struct PeripheralPin {
88 pub pin: String, 88 pub pin: String,
89 pub signal: String, 89 pub signal: String,
90 pub af: Option<String>, 90 pub af: Option<u8>,
91} 91}
92 92
93#[derive(Debug, Eq, PartialEq, Clone, Deserialize)] 93#[derive(Debug, Eq, PartialEq, Clone, Deserialize)]
diff --git a/stm32-metapac-gen/src/lib.rs b/stm32-metapac-gen/src/lib.rs
index d167da49c..575be9e4b 100644
--- a/stm32-metapac-gen/src/lib.rs
+++ b/stm32-metapac-gen/src/lib.rs
@@ -125,7 +125,6 @@ pub fn gen_chip(
125 let mut pin_table: Vec<Vec<String>> = Vec::new(); 125 let mut pin_table: Vec<Vec<String>> = Vec::new();
126 let mut interrupt_table: Vec<Vec<String>> = Vec::new(); 126 let mut interrupt_table: Vec<Vec<String>> = Vec::new();
127 let mut peripherals_table: Vec<Vec<String>> = Vec::new(); 127 let mut peripherals_table: Vec<Vec<String>> = Vec::new();
128 let mut peripheral_pins_table: Vec<Vec<String>> = Vec::new();
129 let mut dma_channels_table: Vec<Vec<String>> = Vec::new(); 128 let mut dma_channels_table: Vec<Vec<String>> = Vec::new();
130 let mut peripheral_counts: BTreeMap<String, u8> = BTreeMap::new(); 129 let mut peripheral_counts: BTreeMap<String, u8> = BTreeMap::new();
131 let mut dma_channel_counts: BTreeMap<String, u8> = BTreeMap::new(); 130 let mut dma_channel_counts: BTreeMap<String, u8> = BTreeMap::new();
@@ -174,19 +173,6 @@ pub fn gen_chip(
174 peripheral_counts.get(&bi.kind).map_or(1, |v| v + 1), 173 peripheral_counts.get(&bi.kind).map_or(1, |v| v + 1),
175 ); 174 );
176 175
177 for pin in &p.pins {
178 let mut row = Vec::new();
179 row.push(p.name.clone());
180 row.push(bi.kind.clone());
181 row.push(bi.block.clone());
182 row.push(pin.pin.clone());
183 row.push(pin.signal.clone());
184 if let Some(ref af) = pin.af {
185 row.push(af.clone());
186 }
187 peripheral_pins_table.push(row);
188 }
189
190 for irq in &p.interrupts { 176 for irq in &p.interrupts {
191 let mut row = Vec::new(); 177 let mut row = Vec::new();
192 row.push(p.name.clone()); 178 row.push(p.name.clone());
@@ -357,7 +343,6 @@ pub fn gen_chip(
357 make_table(&mut data, "interrupts", &interrupt_table); 343 make_table(&mut data, "interrupts", &interrupt_table);
358 make_table(&mut data, "peripherals", &peripherals_table); 344 make_table(&mut data, "peripherals", &peripherals_table);
359 make_table(&mut data, "peripheral_versions", &peripheral_version_table); 345 make_table(&mut data, "peripheral_versions", &peripheral_version_table);
360 make_table(&mut data, "peripheral_pins", &peripheral_pins_table);
361 make_table(&mut data, "dma_channels", &dma_channels_table); 346 make_table(&mut data, "dma_channels", &dma_channels_table);
362 make_table(&mut data, "dbgmcu", &dbgmcu_table); 347 make_table(&mut data, "dbgmcu", &dbgmcu_table);
363 make_peripheral_counts(&mut data, &peripheral_counts); 348 make_peripheral_counts(&mut data, &peripheral_counts);