@@ -87,47 +87,46 @@ static void uart2_irq(void)
87
87
}
88
88
#endif
89
89
90
- #if defined USART3_BASE
91
- static void uart3_irq (void )
90
+ // Used for both USART3_4_IRQn and USART3_8_IRQn
91
+ static void uart3_8_irq (void )
92
92
{
93
- uart_irq (2 );
94
- }
93
+ #if defined(USART3_BASE )
94
+ if (__HAL_GET_PENDING_IT (HAL_ITLINE_USART3 ) != RESET )
95
+ {
96
+ uart_irq (2 );
97
+ }
95
98
#endif
96
-
97
- #if defined USART4_BASE
98
- static void uart4_irq (void )
99
- {
100
- uart_irq (3 );
101
- }
99
+ #if defined(USART4_BASE )
100
+ if (__HAL_GET_PENDING_IT (HAL_ITLINE_USART4 ) != RESET )
101
+ {
102
+ uart_irq (3 );
103
+ }
102
104
#endif
103
-
104
- #if defined USART5_BASE
105
- static void uart5_irq (void )
106
- {
107
- uart_irq (4 );
108
- }
105
+ #if defined(USART5_BASE )
106
+ if (__HAL_GET_PENDING_IT (HAL_ITLINE_USART5 ) != RESET )
107
+ {
108
+ uart_irq (4 );
109
+ }
109
110
#endif
110
-
111
- #if defined USART6_BASE
112
- static void uart6_irq (void )
113
- {
114
- uart_irq (5 );
115
- }
111
+ #if defined(USART6_BASE )
112
+ if (__HAL_GET_PENDING_IT (HAL_ITLINE_USART6 ) != RESET )
113
+ {
114
+ uart_irq (5 );
115
+ }
116
116
#endif
117
-
118
- #if defined USART7_BASE
119
- static void uart7_irq (void )
120
- {
121
- uart_irq (6 );
122
- }
117
+ #if defined(USART7_BASE )
118
+ if (__HAL_GET_PENDING_IT (HAL_ITLINE_USART7 ) != RESET )
119
+ {
120
+ uart_irq (6 );
121
+ }
123
122
#endif
124
-
125
- #if defined USART8_BASE
126
- static void uart8_irq (void )
127
- {
128
- uart_irq (7 );
129
- }
123
+ #if defined(USART8_BASE )
124
+ if (__HAL_GET_PENDING_IT (HAL_ITLINE_USART8 ) != RESET )
125
+ {
126
+ uart_irq (7 );
127
+ }
130
128
#endif
129
+ }
131
130
132
131
void serial_irq_handler (serial_t * obj , uart_irq_handler handler , uint32_t id )
133
132
{
@@ -156,53 +155,55 @@ void serial_irq_set(serial_t *obj, SerialIrq irq, uint32_t enable)
156
155
}
157
156
#endif
158
157
159
- #if defined ( TARGET_STM32F091RC )
158
+ #if defined( USART3_BASE )
160
159
if (obj_s -> uart == UART_3 ) {
160
+ #if defined(TARGET_STM32F091RC )
161
161
irq_n = USART3_8_IRQn ;
162
- vector = (uint32_t )& uart3_irq ;
162
+ #else
163
+ irq_n = USART3_4_IRQn ;
164
+ #endif
165
+ vector = (uint32_t )& uart3_8_irq ;
163
166
}
167
+ #endif
164
168
169
+ #if defined(USART4_BASE )
165
170
if (obj_s -> uart == UART_4 ) {
171
+ #if defined(TARGET_STM32F091RC )
166
172
irq_n = USART3_8_IRQn ;
167
- vector = (uint32_t )& uart4_irq ;
173
+ #else
174
+ irq_n = USART3_4_IRQn ;
175
+ #endif
176
+ vector = (uint32_t )& uart3_8_irq ;
168
177
}
178
+ #endif
169
179
180
+ // Below usart are available only on TARGET_STM32F091RC
181
+ #if defined(USART5_BASE )
170
182
if (obj_s -> uart == UART_5 ) {
171
183
irq_n = USART3_8_IRQn ;
172
- vector = (uint32_t )& uart5_irq ;
184
+ vector = (uint32_t )& uart3_8_irq ;
173
185
}
186
+ #endif
174
187
188
+ #if defined(USART6_BASE )
175
189
if (obj_s -> uart == UART_6 ) {
176
190
irq_n = USART3_8_IRQn ;
177
- vector = (uint32_t )& uart6_irq ;
191
+ vector = (uint32_t )& uart3_8_irq ;
178
192
}
193
+ #endif
179
194
195
+ #if defined(USART7_BASE )
180
196
if (obj_s -> uart == UART_7 ) {
181
197
irq_n = USART3_8_IRQn ;
182
- vector = (uint32_t )& uart7_irq ;
198
+ vector = (uint32_t )& uart3_8_irq ;
183
199
}
200
+ #endif
184
201
202
+ #if defined(USART8_BASE )
185
203
if (obj_s -> uart == UART_8 ) {
186
204
irq_n = USART3_8_IRQn ;
187
- vector = (uint32_t )& uart8_irq ;
205
+ vector = (uint32_t )& uart3_8_irq ;
188
206
}
189
-
190
- #elif defined (TARGET_STM32F030R8 ) || defined (TARGET_STM32F051R8 )
191
-
192
- #else
193
- #if defined(USART3_BASE )
194
- if (obj_s -> uart == UART_3 ) {
195
- irq_n = USART3_4_IRQn ;
196
- vector = (uint32_t )& uart3_irq ;
197
- }
198
- #endif
199
-
200
- #if defined(USART4_BASE )
201
- if (obj_s -> uart == UART_4 ) {
202
- irq_n = USART3_4_IRQn ;
203
- vector = (uint32_t )& uart4_irq ;
204
- }
205
- #endif
206
207
#endif
207
208
208
209
if (enable ) {
0 commit comments