@@ -65,45 +65,66 @@ pub trait TxPin<USART> {}
65
65
pub trait RxPin < USART > { }
66
66
67
67
macro_rules! usart_pins {
68
- ( $( $USART: ident: ( $tx: ty, $rx: ty) , ) +) => {
68
+ ( $( $USART: ident => {
69
+ tx => [ $( $tx: ty) ,+ $( , ) * ] ,
70
+ rx => [ $( $rx: ty) ,+ $( , ) * ] ,
71
+ } ) +) => {
69
72
$(
70
- impl TxPin <stm32:: $USART> for $tx { }
71
- impl RxPin <stm32:: $USART> for $rx { }
73
+ $(
74
+ impl TxPin <stm32:: $USART> for $tx { }
75
+ ) +
76
+ $(
77
+ impl RxPin <stm32:: $USART> for $rx { }
78
+ ) +
72
79
) +
73
80
}
74
81
}
75
82
76
83
#[ cfg( any( feature = "stm32f030" , feature = "stm32f042" ) ) ]
77
84
usart_pins ! {
78
- USART1 : ( gpioa:: PA9 <Alternate <AF1 >>, gpioa:: PA10 <Alternate <AF1 >>) ,
79
- USART1 : ( gpiob:: PB6 <Alternate <AF0 >>, gpiob:: PB6 <Alternate <AF0 >>) ,
85
+ USART1 => {
86
+ tx => [ gpioa:: PA9 <Alternate <AF1 >>, gpiob:: PB6 <Alternate <AF0 >>] ,
87
+ rx => [ gpioa:: PA10 <Alternate <AF1 >>, gpiob:: PB6 <Alternate <AF0 >>] ,
88
+ }
80
89
}
81
90
#[ cfg( feature = "stm32f030x6" ) ]
82
91
usart_pins ! {
83
- USART1 : ( gpioa:: PA2 <Alternate <AF1 >>, gpioa:: PA3 <Alternate <AF1 >>) ,
84
- USART1 : ( gpioa:: PA14 <Alternate <AF1 >>, gpioa:: PA15 <Alternate <AF1 >>) ,
92
+ USART1 => {
93
+ tx => [ gpioa:: PA2 <Alternate <AF1 >>, gpioa:: PA14 <Alternate <AF1 >>] ,
94
+ rx => [ gpioa:: PA3 <Alternate <AF1 >>, gpioa:: PA15 <Alternate <AF1 >>] ,
95
+ }
85
96
}
86
97
#[ cfg( any(
87
98
feature = "stm32f042" ,
88
99
feature = "stm32f030x8" ,
89
100
feature = "stm32f030xc" ,
90
101
) ) ]
91
102
usart_pins ! {
92
- USART2 : ( gpioa:: PA2 <Alternate <AF1 >>, gpioa:: PA3 <Alternate <AF1 >>) ,
93
- USART2 : ( gpioa:: PA14 <Alternate <AF1 >>, gpioa:: PA15 <Alternate <AF1 >>) ,
103
+ USART2 => {
104
+ tx => [ gpioa:: PA2 <Alternate <AF1 >>, gpioa:: PA14 <Alternate <AF1 >>] ,
105
+ rx => [ gpioa:: PA3 <Alternate <AF1 >>, gpioa:: PA15 <Alternate <AF1 >>] ,
106
+ }
94
107
}
95
108
#[ cfg( feature = "stm32f030xc" ) ]
96
109
usart_pins ! {
97
110
// TODO WTF look at this again, in the datasheet PB10 is both tx and rx
98
111
// USART3: (gpiob::PB10, AF4, gpiob::PA11, AF4),
99
- USART3 : ( gpioc:: PC4 <Alternate <AF1 >>, gpioc:: PC5 <Alternate <AF1 >>) ,
100
- USART3 : ( gpioc:: PC10 <Alternate <AF1 >>, gpioc:: PC11 <Alternate <AF1 >>) ,
101
- USART4 : ( gpioa:: PA0 <Alternate <AF4 >>, gpioa:: PA1 <Alternate <AF4 >>) ,
102
- USART4 : ( gpioc:: PC10 <Alternate <AF0 >>, gpioc:: PC11 <Alternate <AF0 >>) ,
103
- USART5 : ( gpiob:: PB3 <Alternate <AF4 >>, gpiob:: PB4 <Alternate <AF4 >>) ,
104
- USART5 : ( gpioc:: PC12 <Alternate <AF2 >>, gpiod:: PD2 <Alternate <AF2 >>) ,
105
- USART6 : ( gpioa:: PA4 <Alternate <AF5 >>, gpioa:: PA5 <Alternate <AF5 >>) ,
106
- USART6 : ( gpioc:: PC0 <Alternate <AF2 >>, gpioc:: PC1 <Alternate <AF2 >>) ,
112
+ USART3 => {
113
+ tx => [ gpioc:: PC4 <Alternate <AF1 >>, gpioc:: PC10 <Alternate <AF1 >>] ,
114
+ rx => [ gpioc:: PC5 <Alternate <AF1 >>, gpioc:: PC11 <Alternate <AF1 >>] ,
115
+ }
116
+ USART4 => {
117
+ tx => [ gpioa:: PA0 <Alternate <AF4 >>, gpioc:: PC10 <Alternate <AF0 >>] ,
118
+ rx => [ gpioa:: PA1 <Alternate <AF4 >>, gpioc:: PC11 <Alternate <AF0 >>] ,
119
+ }
120
+ USART5 => {
121
+ tx => [ gpiob:: PB3 <Alternate <AF4 >>, gpioc:: PC12 <Alternate <AF2 >>] ,
122
+ rx => [ gpiob:: PB4 <Alternate <AF4 >>, gpiod:: PD2 <Alternate <AF2 >>] ,
123
+ }
124
+ USART6 => {
125
+ tx => [ gpioa:: PA4 <Alternate <AF5 >>, gpioc:: PC0 <Alternate <AF2 >>] ,
126
+ rx => [ gpioa:: PA5 <Alternate <AF5 >>, gpioc:: PC1 <Alternate <AF2 >>] ,
127
+ }
107
128
}
108
129
109
130
/// Serial abstraction
0 commit comments