@@ -28,9 +28,9 @@ impl<TIM, PIN: TimerPin<TIM>> TriggerPin<TIM, PIN> {
28
28
}
29
29
30
30
macro_rules! timer_pins {
31
- ( $TIMX: ident, [ $( ( $ch: ty, $pin: ty , $af_mode: expr) , ) + ] ) => {
31
+ ( $TIMX: ident, [ $( ( $ch: ty, $pin: tt , $af_mode: expr) , ) + ] ) => {
32
32
$(
33
- impl TimerPin <$TIMX> for $pin {
33
+ impl TimerPin <$TIMX> for $pin< Analog > {
34
34
type Channel = $ch;
35
35
36
36
fn setup( & self ) {
@@ -41,6 +41,19 @@ macro_rules! timer_pins {
41
41
self . into_analog( )
42
42
}
43
43
}
44
+
45
+ impl TimerPin <$TIMX> for $pin<Output <OpenDrain >> {
46
+ type Channel = $ch;
47
+
48
+ fn setup( & self ) {
49
+ self . set_alt_mode( $af_mode) ;
50
+ }
51
+
52
+ fn release( self ) -> Self {
53
+ self . into_open_drain_output( )
54
+ }
55
+ }
56
+
44
57
) +
45
58
} ;
46
59
}
@@ -114,106 +127,129 @@ trigger_pins!(TIM3, [
114
127
( PC7 <DefaultMode >, cc2p, ic2f) ,
115
128
] ) ;
116
129
117
- timer_pins ! ( TIM1 , [
118
- ( Channel1 , PA8 <DefaultMode >, AltFunction :: AF2 ) ,
119
- ( Channel1 , PC8 <DefaultMode >, AltFunction :: AF2 ) ,
120
- ( Channel2 , PA9 <DefaultMode >, AltFunction :: AF2 ) ,
121
- ( Channel2 , PB3 <DefaultMode >, AltFunction :: AF1 ) ,
122
- ( Channel2 , PC9 <DefaultMode >, AltFunction :: AF2 ) ,
123
- ( Channel3 , PA10 <DefaultMode >, AltFunction :: AF2 ) ,
124
- ( Channel3 , PB6 <DefaultMode >, AltFunction :: AF1 ) ,
125
- ( Channel3 , PC10 <DefaultMode >, AltFunction :: AF2 ) ,
126
- ( Channel4 , PA11 <DefaultMode >, AltFunction :: AF2 ) ,
127
- ( Channel4 , PC11 <DefaultMode >, AltFunction :: AF2 ) ,
128
- ] ) ;
130
+ timer_pins ! (
131
+ TIM1 ,
132
+ [
133
+ ( Channel1 , PA8 , AltFunction :: AF2 ) ,
134
+ ( Channel1 , PC8 , AltFunction :: AF2 ) ,
135
+ ( Channel2 , PA9 , AltFunction :: AF2 ) ,
136
+ ( Channel2 , PB3 , AltFunction :: AF1 ) ,
137
+ ( Channel2 , PC9 , AltFunction :: AF2 ) ,
138
+ ( Channel3 , PA10 , AltFunction :: AF2 ) ,
139
+ ( Channel3 , PB6 , AltFunction :: AF1 ) ,
140
+ ( Channel3 , PC10 , AltFunction :: AF2 ) ,
141
+ ( Channel4 , PA11 , AltFunction :: AF2 ) ,
142
+ ( Channel4 , PC11 , AltFunction :: AF2 ) ,
143
+ ]
144
+ ) ;
129
145
130
146
// Inverted pins
131
- timer_pins ! ( TIM1 , [
132
- ( Channel1 , PA7 <DefaultMode >, AltFunction :: AF2 ) ,
133
- ( Channel1 , PB13 <DefaultMode >, AltFunction :: AF2 ) ,
134
- ( Channel1 , PD2 <DefaultMode >, AltFunction :: AF2 ) ,
135
- ( Channel2 , PB0 <DefaultMode >, AltFunction :: AF2 ) ,
136
- ( Channel2 , PB14 <DefaultMode >, AltFunction :: AF2 ) ,
137
- ( Channel2 , PD3 <DefaultMode >, AltFunction :: AF2 ) ,
138
- ( Channel3 , PB1 <DefaultMode >, AltFunction :: AF2 ) ,
139
- ( Channel3 , PB15 <DefaultMode >, AltFunction :: AF2 ) ,
140
- ( Channel3 , PD4 <DefaultMode >, AltFunction :: AF2 ) ,
141
- ] ) ;
147
+ timer_pins ! (
148
+ TIM1 ,
149
+ [
150
+ ( Channel1 , PA7 , AltFunction :: AF2 ) ,
151
+ ( Channel1 , PB13 , AltFunction :: AF2 ) ,
152
+ ( Channel1 , PD2 , AltFunction :: AF2 ) ,
153
+ ( Channel2 , PB0 , AltFunction :: AF2 ) ,
154
+ ( Channel2 , PB14 , AltFunction :: AF2 ) ,
155
+ ( Channel2 , PD3 , AltFunction :: AF2 ) ,
156
+ ( Channel3 , PB1 , AltFunction :: AF2 ) ,
157
+ ( Channel3 , PB15 , AltFunction :: AF2 ) ,
158
+ ( Channel3 , PD4 , AltFunction :: AF2 ) ,
159
+ ]
160
+ ) ;
142
161
143
162
#[ cfg( feature = "stm32g0x1" ) ]
144
- timer_pins ! ( TIM2 , [
145
- ( Channel1 , PA0 <DefaultMode >, AltFunction :: AF2 ) ,
146
- ( Channel1 , PA5 <DefaultMode >, AltFunction :: AF2 ) ,
147
- ( Channel1 , PA15 <DefaultMode >, AltFunction :: AF2 ) ,
148
- ( Channel1 , PC4 <DefaultMode >, AltFunction :: AF2 ) ,
149
- ( Channel2 , PA1 <DefaultMode >, AltFunction :: AF2 ) ,
150
- ( Channel2 , PB3 <DefaultMode >, AltFunction :: AF2 ) ,
151
- ( Channel2 , PC5 <DefaultMode >, AltFunction :: AF2 ) ,
152
- ( Channel3 , PA2 <DefaultMode >, AltFunction :: AF2 ) ,
153
- ( Channel3 , PB10 <DefaultMode >, AltFunction :: AF2 ) ,
154
- ( Channel3 , PC6 <DefaultMode >, AltFunction :: AF2 ) ,
155
- ( Channel4 , PA3 <DefaultMode >, AltFunction :: AF2 ) ,
156
- ( Channel4 , PB11 <DefaultMode >, AltFunction :: AF2 ) ,
157
- ( Channel4 , PC7 <DefaultMode >, AltFunction :: AF2 ) ,
158
- ] ) ;
159
-
160
- timer_pins ! ( TIM3 , [
161
- ( Channel1 , PA6 <DefaultMode >, AltFunction :: AF1 ) ,
162
- ( Channel1 , PB4 <DefaultMode >, AltFunction :: AF1 ) ,
163
- ( Channel1 , PC6 <DefaultMode >, AltFunction :: AF1 ) ,
164
- ( Channel2 , PA7 <DefaultMode >, AltFunction :: AF1 ) ,
165
- ( Channel2 , PB5 <DefaultMode >, AltFunction :: AF1 ) ,
166
- ( Channel2 , PC7 <DefaultMode >, AltFunction :: AF1 ) ,
167
- ( Channel3 , PB0 <DefaultMode >, AltFunction :: AF1 ) ,
168
- ( Channel3 , PC8 <DefaultMode >, AltFunction :: AF1 ) ,
169
- ( Channel4 , PB1 <DefaultMode >, AltFunction :: AF1 ) ,
170
- ( Channel4 , PC9 <DefaultMode >, AltFunction :: AF1 ) ,
171
- ] ) ;
172
-
173
- timer_pins ! ( TIM14 , [
174
- ( Channel1 , PA4 <DefaultMode >, AltFunction :: AF4 ) ,
175
- ( Channel1 , PA7 <DefaultMode >, AltFunction :: AF4 ) ,
176
- ( Channel1 , PB1 <DefaultMode >, AltFunction :: AF0 ) ,
177
- ( Channel1 , PC12 <DefaultMode >, AltFunction :: AF2 ) ,
178
- ( Channel1 , PF0 <DefaultMode >, AltFunction :: AF2 ) ,
179
- ] ) ;
163
+ timer_pins ! (
164
+ TIM2 ,
165
+ [
166
+ ( Channel1 , PA0 , AltFunction :: AF2 ) ,
167
+ ( Channel1 , PA5 , AltFunction :: AF2 ) ,
168
+ ( Channel1 , PA15 , AltFunction :: AF2 ) ,
169
+ ( Channel1 , PC4 , AltFunction :: AF2 ) ,
170
+ ( Channel2 , PA1 , AltFunction :: AF2 ) ,
171
+ ( Channel2 , PB3 , AltFunction :: AF2 ) ,
172
+ ( Channel2 , PC5 , AltFunction :: AF2 ) ,
173
+ ( Channel3 , PA2 , AltFunction :: AF2 ) ,
174
+ ( Channel3 , PB10 , AltFunction :: AF2 ) ,
175
+ ( Channel3 , PC6 , AltFunction :: AF2 ) ,
176
+ ( Channel4 , PA3 , AltFunction :: AF2 ) ,
177
+ ( Channel4 , PB11 , AltFunction :: AF2 ) ,
178
+ ( Channel4 , PC7 , AltFunction :: AF2 ) ,
179
+ ]
180
+ ) ;
181
+
182
+ timer_pins ! (
183
+ TIM3 ,
184
+ [
185
+ ( Channel1 , PA6 , AltFunction :: AF1 ) ,
186
+ ( Channel1 , PB4 , AltFunction :: AF1 ) ,
187
+ ( Channel1 , PC6 , AltFunction :: AF1 ) ,
188
+ ( Channel2 , PA7 , AltFunction :: AF1 ) ,
189
+ ( Channel2 , PB5 , AltFunction :: AF1 ) ,
190
+ ( Channel2 , PC7 , AltFunction :: AF1 ) ,
191
+ ( Channel3 , PB0 , AltFunction :: AF1 ) ,
192
+ ( Channel3 , PC8 , AltFunction :: AF1 ) ,
193
+ ( Channel4 , PB1 , AltFunction :: AF1 ) ,
194
+ ( Channel4 , PC9 , AltFunction :: AF1 ) ,
195
+ ]
196
+ ) ;
197
+
198
+ timer_pins ! (
199
+ TIM14 ,
200
+ [
201
+ ( Channel1 , PA4 , AltFunction :: AF4 ) ,
202
+ ( Channel1 , PA7 , AltFunction :: AF4 ) ,
203
+ ( Channel1 , PB1 , AltFunction :: AF0 ) ,
204
+ ( Channel1 , PC12 , AltFunction :: AF2 ) ,
205
+ ( Channel1 , PF0 , AltFunction :: AF2 ) ,
206
+ ]
207
+ ) ;
180
208
181
209
#[ cfg( any( feature = "stm32g070" , feature = "stm32g071" , feature = "stm32g081" ) ) ]
182
- timer_pins ! ( TIM15 , [
183
- ( Channel1 , PA2 <DefaultMode >, AltFunction :: AF5 ) ,
184
- ( Channel1 , PB14 <DefaultMode >, AltFunction :: AF5 ) ,
185
- ( Channel1 , PC1 <DefaultMode >, AltFunction :: AF2 ) ,
186
- ( Channel2 , PA3 <DefaultMode >, AltFunction :: AF5 ) ,
187
- ( Channel2 , PB15 <DefaultMode >, AltFunction :: AF5 ) ,
188
- ( Channel2 , PC2 <DefaultMode >, AltFunction :: AF2 ) ,
189
- ] ) ;
210
+ timer_pins ! (
211
+ TIM15 ,
212
+ [
213
+ ( Channel1 , PA2 , AltFunction :: AF5 ) ,
214
+ ( Channel1 , PB14 , AltFunction :: AF5 ) ,
215
+ ( Channel1 , PC1 , AltFunction :: AF2 ) ,
216
+ ( Channel2 , PA3 , AltFunction :: AF5 ) ,
217
+ ( Channel2 , PB15 , AltFunction :: AF5 ) ,
218
+ ( Channel2 , PC2 , AltFunction :: AF2 ) ,
219
+ ]
220
+ ) ;
190
221
191
222
// Inverted pins
192
223
#[ cfg( any( feature = "stm32g070" , feature = "stm32g071" , feature = "stm32g081" ) ) ]
193
- timer_pins ! ( TIM15 , [
194
- ( Channel1 , PA1 <DefaultMode >, AltFunction :: AF5 ) ,
195
- ( Channel1 , PB13 <DefaultMode >, AltFunction :: AF5 ) ,
196
- ( Channel1 , PF1 <DefaultMode >, AltFunction :: AF2 ) ,
197
- ] ) ;
198
-
199
- timer_pins ! ( TIM16 , [
200
- ( Channel1 , PA6 <DefaultMode >, AltFunction :: AF5 ) ,
201
- ( Channel1 , PB8 <DefaultMode >, AltFunction :: AF2 ) ,
202
- ( Channel1 , PD0 <DefaultMode >, AltFunction :: AF2 ) ,
203
- ] ) ;
224
+ timer_pins ! (
225
+ TIM15 ,
226
+ [
227
+ ( Channel1 , PA1 , AltFunction :: AF5 ) ,
228
+ ( Channel1 , PB13 , AltFunction :: AF5 ) ,
229
+ ( Channel1 , PF1 , AltFunction :: AF2 ) ,
230
+ ]
231
+ ) ;
232
+
233
+ timer_pins ! (
234
+ TIM16 ,
235
+ [
236
+ ( Channel1 , PA6 , AltFunction :: AF5 ) ,
237
+ ( Channel1 , PB8 , AltFunction :: AF2 ) ,
238
+ ( Channel1 , PD0 , AltFunction :: AF2 ) ,
239
+ ]
240
+ ) ;
204
241
205
242
// Inverted pins
206
- timer_pins ! ( TIM16 , [
207
- ( Channel1 , PB6 <DefaultMode >, AltFunction :: AF2 ) ,
208
- ] ) ;
243
+ timer_pins ! ( TIM16 , [ ( Channel1 , PB6 , AltFunction :: AF2 ) , ] ) ;
209
244
210
- timer_pins ! ( TIM17 , [
211
- ( Channel1 , PA7 <DefaultMode >, AltFunction :: AF6 ) ,
212
- ( Channel1 , PB9 <DefaultMode >, AltFunction :: AF2 ) ,
213
- ( Channel1 , PD1 <DefaultMode >, AltFunction :: AF2 ) ,
214
- ] ) ;
245
+ timer_pins ! (
246
+ TIM17 ,
247
+ [
248
+ ( Channel1 , PA7 , AltFunction :: AF6 ) ,
249
+ ( Channel1 , PB9 , AltFunction :: AF2 ) ,
250
+ ( Channel1 , PD1 , AltFunction :: AF2 ) ,
251
+ ]
252
+ ) ;
215
253
216
254
// Inverted pins
217
- timer_pins ! ( TIM17 , [
218
- ( Channel1 , PB7 <DefaultMode >, AltFunction :: AF2 ) ,
219
- ] ) ;
255
+ timer_pins ! ( TIM17 , [ ( Channel1 , PB7 , AltFunction :: AF2 ) , ] ) ;
0 commit comments