|
| 1 | +#[cfg(feature = "device-selected")] |
| 2 | +use crate::gpio::gpioa::*; |
| 3 | +#[cfg(feature = "device-selected")] |
| 4 | +use crate::gpio::gpiob::*; |
| 5 | +#[allow(unused)] |
| 6 | +#[cfg(feature = "device-selected")] |
| 7 | +use crate::gpio::gpioc::*; |
| 8 | +#[cfg(feature = "stm32f030xc")] |
| 9 | +use crate::gpio::gpiod::*; |
| 10 | +#[allow(unused)] |
| 11 | +use crate::gpio::{Alternate, AF0, AF1, AF2, AF4, AF5}; |
| 12 | +use crate::serial::*; |
| 13 | +use crate::spi::*; |
| 14 | +#[cfg(feature = "device-selected")] |
| 15 | +use crate::stm32::*; |
| 16 | + |
| 17 | +macro_rules! pins { |
| 18 | + ($($PIN:ident => { |
| 19 | + $($AF:ty: $TRAIT:ty),+ |
| 20 | + }),+) => { |
| 21 | + $( |
| 22 | + $( |
| 23 | + impl $TRAIT for $PIN<Alternate<$AF>> {} |
| 24 | + )+ |
| 25 | + )+ |
| 26 | + } |
| 27 | +} |
| 28 | + |
| 29 | +#[cfg(feature = "device-selected")] |
| 30 | +pins! { |
| 31 | + PA5 => {AF0: SckPin<SPI1>}, |
| 32 | + PA6 => {AF0: MisoPin<SPI1>}, |
| 33 | + PA7 => {AF0: MosiPin<SPI1>}, |
| 34 | + PA9 => {AF1: TxPin<USART1>}, |
| 35 | + PA10 => {AF1: RxPin<USART1>}, |
| 36 | + PB3 => {AF0: SckPin<SPI1>}, |
| 37 | + PB4 => {AF0: MisoPin<SPI1>}, |
| 38 | + PB5 => {AF0: MosiPin<SPI1>}, |
| 39 | + PB6 => {AF0: TxPin<USART1>}, |
| 40 | + PB7 => {AF0: RxPin<USART1>} |
| 41 | +} |
| 42 | + |
| 43 | +#[cfg(feature = "stm32f030x6")] |
| 44 | +pins! { |
| 45 | + PA2 => {AF1: TxPin<USART1>}, |
| 46 | + PA3 => {AF1: RxPin<USART1>}, |
| 47 | + PA14 => {AF1: TxPin<USART1>}, |
| 48 | + PA15 => {AF1: RxPin<USART1>}, |
| 49 | + PB13 => {AF0: SckPin<SPI1>}, |
| 50 | + PB14 => {AF0: MisoPin<SPI1>}, |
| 51 | + PB15 => {AF0: MosiPin<SPI1>} |
| 52 | +} |
| 53 | + |
| 54 | +#[cfg(any( |
| 55 | + feature = "stm32f030x8", |
| 56 | + feature = "stm32f030xc", |
| 57 | + feature = "stm32f042", |
| 58 | + feature = "stm32f070", |
| 59 | +))] |
| 60 | +pins! { |
| 61 | + PA2 => {AF1: TxPin<USART2>}, |
| 62 | + PA3 => {AF1: RxPin<USART2>}, |
| 63 | + PA14 => {AF1: TxPin<USART2>}, |
| 64 | + PA15 => {AF1: RxPin<USART2>} |
| 65 | +} |
| 66 | + |
| 67 | +#[cfg(any(feature = "stm32f030xc", feature = "stm32f070xb"))] |
| 68 | +pins! { |
| 69 | + PA0 => {AF4: TxPin<USART4>}, |
| 70 | + PA1 => {AF4: RxPin<USART4>}, |
| 71 | + PB10 => { |
| 72 | + AF4: TxPin<USART3>, |
| 73 | + AF5: SckPin<SPI2> |
| 74 | + }, |
| 75 | + PB11 => {AF4: RxPin<USART3>}, |
| 76 | + PC2 => {AF1: MisoPin<SPI2>}, |
| 77 | + PC3 => {AF1: MosiPin<SPI2>}, |
| 78 | + PC4 => {AF1: TxPin<USART3>}, |
| 79 | + PC5 => {AF1: RxPin<USART3>}, |
| 80 | + PC10 => { |
| 81 | + AF0: TxPin<USART4>, |
| 82 | + AF1: TxPin<USART3> |
| 83 | + }, |
| 84 | + PC11 => { |
| 85 | + AF0: RxPin<USART4>, |
| 86 | + AF1: RxPin<USART3> |
| 87 | + } |
| 88 | +} |
| 89 | + |
| 90 | +#[cfg(feature = "stm32f030xc")] |
| 91 | +pins! { |
| 92 | + PA4 => {AF5: TxPin<USART6>}, |
| 93 | + PA5 => {AF5: RxPin<USART6>}, |
| 94 | + PB3 => {AF4: TxPin<USART5>}, |
| 95 | + PB4 => {AF4: RxPin<USART5>}, |
| 96 | + PC0 => {AF2: TxPin<USART6>}, |
| 97 | + PC1 => {AF2: RxPin<USART6>}, |
| 98 | + PC12 => {AF2: RxPin<USART5>}, |
| 99 | + PD2 => {AF2: TxPin<USART5>} |
| 100 | +} |
| 101 | + |
| 102 | +#[cfg(any( |
| 103 | + feature = "stm32f030x8", |
| 104 | + feature = "stm32f030xc", |
| 105 | + feature = "stm32f070xb" |
| 106 | +))] |
| 107 | +pins! { |
| 108 | + PB13 => {AF0: SckPin<SPI2>}, |
| 109 | + PB14 => {AF0: MisoPin<SPI2>}, |
| 110 | + PB15 => {AF0: MosiPin<SPI2>} |
| 111 | +} |
0 commit comments