@@ -98,165 +98,6 @@ pub enum Event {
9898pub trait TxPin < USART > { }
9999pub trait RxPin < USART > { }
100100
101- macro_rules! usart_pins {
102- ( $( $USART: ident => {
103- tx => [ $( $tx: ty) ,+ $( , ) * ] ,
104- rx => [ $( $rx: ty) ,+ $( , ) * ] ,
105- } ) +) => {
106- $(
107- $(
108- impl TxPin <crate :: stm32:: $USART> for $tx { }
109- ) +
110- $(
111- impl RxPin <crate :: stm32:: $USART> for $rx { }
112- ) +
113- ) +
114- }
115- }
116-
117- #[ cfg( any(
118- feature = "stm32f030" ,
119- feature = "stm32f031" ,
120- feature = "stm32f038" ,
121- feature = "stm32f042" ,
122- feature = "stm32f048" ,
123- feature = "stm32f051" ,
124- feature = "stm32f058" ,
125- feature = "stm32f070" ,
126- feature = "stm32f071" ,
127- feature = "stm32f072" ,
128- feature = "stm32f078" ,
129- feature = "stm32f091" ,
130- feature = "stm32f098" ,
131- ) ) ]
132- usart_pins ! {
133- USART1 => {
134- tx => [ gpioa:: PA9 <Alternate <AF1 >>, gpiob:: PB6 <Alternate <AF0 >>] ,
135- rx => [ gpioa:: PA10 <Alternate <AF1 >>, gpiob:: PB7 <Alternate <AF0 >>] ,
136- }
137- }
138- #[ cfg( any(
139- feature = "stm32f030x4" ,
140- feature = "stm32f030x6" ,
141- feature = "stm32f031" ,
142- feature = "stm32f038" ,
143- ) ) ]
144- usart_pins ! {
145- USART1 => {
146- tx => [ gpioa:: PA2 <Alternate <AF1 >>, gpioa:: PA14 <Alternate <AF1 >>] ,
147- rx => [ gpioa:: PA3 <Alternate <AF1 >>, gpioa:: PA15 <Alternate <AF1 >>] ,
148- }
149- }
150-
151- #[ cfg( any(
152- feature = "stm32f030x8" ,
153- feature = "stm32f030xc" ,
154- feature = "stm32f042" ,
155- feature = "stm32f048" ,
156- feature = "stm32f051" ,
157- feature = "stm32f058" ,
158- feature = "stm32f070" ,
159- feature = "stm32f071" ,
160- feature = "stm32f072" ,
161- feature = "stm32f078" ,
162- feature = "stm32f091" ,
163- feature = "stm32f098" ,
164- ) ) ]
165- usart_pins ! {
166- USART2 => {
167- tx => [ gpioa:: PA2 <Alternate <AF1 >>, gpioa:: PA14 <Alternate <AF1 >>] ,
168- rx => [ gpioa:: PA3 <Alternate <AF1 >>, gpioa:: PA15 <Alternate <AF1 >>] ,
169- }
170- }
171- #[ cfg( any(
172- feature = "stm32f071" ,
173- feature = "stm32f072" ,
174- feature = "stm32f078" ,
175- feature = "stm32f091" ,
176- feature = "stm32f098" ,
177- ) ) ]
178- usart_pins ! {
179- USART2 => {
180- tx => [ gpiod:: PD5 <Alternate <AF0 >>] ,
181- rx => [ gpiod:: PD6 <Alternate <AF0 >>] ,
182- }
183- }
184-
185- #[ cfg( any(
186- feature = "stm32f030xc" ,
187- feature = "stm32f070xb" ,
188- feature = "stm32f071" ,
189- feature = "stm32f072" ,
190- feature = "stm32f078" ,
191- feature = "stm32f091" ,
192- feature = "stm32f098" ,
193- ) ) ]
194- usart_pins ! {
195- USART3 => {
196- // According to the datasheet PB10 is both tx and rx, but in stm32cubemx it's only tx
197- tx => [ gpiob:: PB10 <Alternate <AF4 >>, gpioc:: PC4 <Alternate <AF1 >>, gpioc:: PC10 <Alternate <AF1 >>] ,
198- rx => [ gpiob:: PB11 <Alternate <AF4 >>, gpioc:: PC5 <Alternate <AF1 >>, gpioc:: PC11 <Alternate <AF1 >>] ,
199- }
200- USART4 => {
201- tx => [ gpioa:: PA0 <Alternate <AF4 >>, gpioc:: PC10 <Alternate <AF0 >>] ,
202- rx => [ gpioa:: PA1 <Alternate <AF4 >>, gpioc:: PC11 <Alternate <AF0 >>] ,
203- }
204- }
205- #[ cfg( any(
206- feature = "stm32f071" ,
207- feature = "stm32f072" ,
208- feature = "stm32f078" ,
209- feature = "stm32f091" ,
210- feature = "stm32f098" ,
211- ) ) ]
212- usart_pins ! {
213- USART3 => {
214- tx => [ gpiod:: PD8 <Alternate <AF0 >>] ,
215- rx => [ gpiod:: PD9 <Alternate <AF0 >>] ,
216- }
217- }
218- // TODO: The ST SVD files are missing the entire PE enable register.
219- // Re-enable as soon as this gets fixed.
220- // #[cfg(any(feature = "stm32f091", feature = "stm32f098"))]
221- // usart_pins! {
222- // USART4 => {
223- // tx => [gpioe::PE8<Alternate<AF1>>],
224- // rx => [gpioe::PE9<Alternate<AF1>>],
225- // }
226- // }
227-
228- #[ cfg( any( feature = "stm32f030xc" , feature = "stm32f091" , feature = "stm32f098" ) ) ]
229- usart_pins ! {
230- USART5 => {
231- tx => [ gpioc:: PC12 <Alternate <AF2 >>] ,
232- rx => [ gpiod:: PD2 <Alternate <AF2 >>] ,
233- }
234- USART6 => {
235- tx => [ gpioa:: PA4 <Alternate <AF5 >>, gpioc:: PC0 <Alternate <AF2 >>] ,
236- rx => [ gpioa:: PA5 <Alternate <AF5 >>, gpioc:: PC1 <Alternate <AF2 >>] ,
237- }
238- }
239- #[ cfg( any( feature = "stm32f030xc" , feature = "stm32f091" ) ) ]
240- usart_pins ! {
241- USART5 => {
242- tx => [ gpiob:: PB3 <Alternate <AF4 >>] ,
243- rx => [ gpiob:: PB4 <Alternate <AF4 >>] ,
244- }
245- }
246- // TODO: The ST SVD files are missing the entire PE enable register.
247- // Re-enable as soon as this gets fixed.
248- #[ cfg( any( feature = "stm32f091" , feature = "stm32f098" ) ) ]
249- usart_pins ! {
250- // USART5 => {
251- // tx => [gpioe::PE10<Alternate<AF1>>],
252- // rx => [gpioe::PE11<Alternate<AF1>>],
253- // }
254- USART6 => {
255- tx => [ gpiof:: PF9 <Alternate <AF1 >>] ,
256- rx => [ gpiof:: PF10 <Alternate <AF1 >>] ,
257- }
258- }
259-
260101/// Serial abstraction
261102pub struct Serial < USART , TXPIN , RXPIN > {
262103 usart : USART ,
0 commit comments