@@ -215,7 +215,11 @@ STATIC bool uart_init2(pyb_uart_obj_t *uart_obj) {
215
215
case PYB_UART_3 :
216
216
uart_unit = 3 ;
217
217
UARTx = USART3 ;
218
+ #if defined(STM32F0 )
219
+ irqn = USART3_8_IRQn ;
220
+ #else
218
221
irqn = USART3_IRQn ;
222
+ #endif
219
223
pins [0 ] = MICROPY_HW_UART3_TX ;
220
224
pins [1 ] = MICROPY_HW_UART3_RX ;
221
225
#if defined(MICROPY_HW_UART3_RTS )
@@ -235,30 +239,46 @@ STATIC bool uart_init2(pyb_uart_obj_t *uart_obj) {
235
239
#if defined(MICROPY_HW_UART4_TX ) && defined(MICROPY_HW_UART4_RX )
236
240
case PYB_UART_4 :
237
241
uart_unit = 4 ;
242
+ #if defined(STM32F0 )
243
+ UARTx = USART4 ;
244
+ irqn = USART3_8_IRQn ;
245
+ __HAL_RCC_USART4_CLK_ENABLE ();
246
+ #else
238
247
UARTx = UART4 ;
239
248
irqn = UART4_IRQn ;
249
+ __HAL_RCC_UART4_CLK_ENABLE ();
250
+ #endif
240
251
pins [0 ] = MICROPY_HW_UART4_TX ;
241
252
pins [1 ] = MICROPY_HW_UART4_RX ;
242
- __HAL_RCC_UART4_CLK_ENABLE ();
243
253
break ;
244
254
#endif
245
255
246
256
#if defined(MICROPY_HW_UART5_TX ) && defined(MICROPY_HW_UART5_RX )
247
257
case PYB_UART_5 :
248
258
uart_unit = 5 ;
259
+ #if defined(STM32F0 )
260
+ UARTx = USART5 ;
261
+ irqn = USART3_8_IRQn ;
262
+ __HAL_RCC_USART5_CLK_ENABLE ();
263
+ #else
249
264
UARTx = UART5 ;
250
265
irqn = UART5_IRQn ;
266
+ __HAL_RCC_UART5_CLK_ENABLE ();
267
+ #endif
251
268
pins [0 ] = MICROPY_HW_UART5_TX ;
252
269
pins [1 ] = MICROPY_HW_UART5_RX ;
253
- __HAL_RCC_UART5_CLK_ENABLE ();
254
270
break ;
255
271
#endif
256
272
257
273
#if defined(MICROPY_HW_UART6_TX ) && defined(MICROPY_HW_UART6_RX )
258
274
case PYB_UART_6 :
259
275
uart_unit = 6 ;
260
276
UARTx = USART6 ;
277
+ #if defined(STM32F0 )
278
+ irqn = USART3_8_IRQn ;
279
+ #else
261
280
irqn = USART6_IRQn ;
281
+ #endif
262
282
pins [0 ] = MICROPY_HW_UART6_TX ;
263
283
pins [1 ] = MICROPY_HW_UART6_RX ;
264
284
#if defined(MICROPY_HW_UART6_RTS )
@@ -278,11 +298,17 @@ STATIC bool uart_init2(pyb_uart_obj_t *uart_obj) {
278
298
#if defined(MICROPY_HW_UART7_TX ) && defined(MICROPY_HW_UART7_RX )
279
299
case PYB_UART_7 :
280
300
uart_unit = 7 ;
301
+ #if defined(STM32F0 )
302
+ UARTx = USART7 ;
303
+ irqn = USART3_8_IRQn ;
304
+ __HAL_RCC_USART7_CLK_ENABLE ();
305
+ #else
281
306
UARTx = UART7 ;
282
307
irqn = UART7_IRQn ;
308
+ __HAL_RCC_UART7_CLK_ENABLE ();
309
+ #endif
283
310
pins [0 ] = MICROPY_HW_UART7_TX ;
284
311
pins [1 ] = MICROPY_HW_UART7_RX ;
285
- __HAL_RCC_UART7_CLK_ENABLE ();
286
312
break ;
287
313
#endif
288
314
@@ -806,6 +832,14 @@ STATIC mp_obj_t pyb_uart_make_new(const mp_obj_type_t *type, size_t n_args, size
806
832
} else if (strcmp (port , MICROPY_HW_UART6_NAME ) == 0 ) {
807
833
uart_id = PYB_UART_6 ;
808
834
#endif
835
+ #ifdef MICROPY_HW_UART7_NAME
836
+ } else if (strcmp (port , MICROPY_HW_UART7_NAME ) == 0 ) {
837
+ uart_id = PYB_UART_7 ;
838
+ #endif
839
+ #ifdef MICROPY_HW_UART8_NAME
840
+ } else if (strcmp (port , MICROPY_HW_UART8_NAME ) == 0 ) {
841
+ uart_id = PYB_UART_8 ;
842
+ #endif
809
843
} else {
810
844
nlr_raise (mp_obj_new_exception_msg_varg (& mp_type_ValueError , "UART(%s) doesn't exist" , port ));
811
845
}
@@ -876,13 +910,25 @@ STATIC mp_obj_t pyb_uart_deinit(mp_obj_t self_in) {
876
910
__HAL_RCC_UART4_RELEASE_RESET ();
877
911
__HAL_RCC_UART4_CLK_DISABLE ();
878
912
#endif
913
+ #if defined(USART4 )
914
+ } else if (uart -> Instance == USART4 ) {
915
+ __HAL_RCC_USART4_FORCE_RESET ();
916
+ __HAL_RCC_USART4_RELEASE_RESET ();
917
+ __HAL_RCC_USART4_CLK_DISABLE ();
918
+ #endif
879
919
#if defined(UART5 )
880
920
} else if (uart -> Instance == UART5 ) {
881
921
HAL_NVIC_DisableIRQ (UART5_IRQn );
882
922
__HAL_RCC_UART5_FORCE_RESET ();
883
923
__HAL_RCC_UART5_RELEASE_RESET ();
884
924
__HAL_RCC_UART5_CLK_DISABLE ();
885
925
#endif
926
+ #if defined(USART5 )
927
+ } else if (uart -> Instance == USART5 ) {
928
+ __HAL_RCC_USART5_FORCE_RESET ();
929
+ __HAL_RCC_USART5_RELEASE_RESET ();
930
+ __HAL_RCC_USART5_CLK_DISABLE ();
931
+ #endif
886
932
#if defined(UART6 )
887
933
} else if (uart -> Instance == USART6 ) {
888
934
HAL_NVIC_DisableIRQ (USART6_IRQn );
@@ -897,13 +943,25 @@ STATIC mp_obj_t pyb_uart_deinit(mp_obj_t self_in) {
897
943
__HAL_RCC_UART7_RELEASE_RESET ();
898
944
__HAL_RCC_UART7_CLK_DISABLE ();
899
945
#endif
946
+ #if defined(USART7 )
947
+ } else if (uart -> Instance == USART7 ) {
948
+ __HAL_RCC_USART7_FORCE_RESET ();
949
+ __HAL_RCC_USART7_RELEASE_RESET ();
950
+ __HAL_RCC_USART7_CLK_DISABLE ();
951
+ #endif
900
952
#if defined(UART8 )
901
953
} else if (uart -> Instance == UART8 ) {
902
954
HAL_NVIC_DisableIRQ (UART8_IRQn );
903
955
__HAL_RCC_UART8_FORCE_RESET ();
904
956
__HAL_RCC_UART8_RELEASE_RESET ();
905
957
__HAL_RCC_UART8_CLK_DISABLE ();
906
958
#endif
959
+ #if defined(USART8 )
960
+ } else if (uart -> Instance == USART8 ) {
961
+ __HAL_RCC_USART8_FORCE_RESET ();
962
+ __HAL_RCC_USART8_RELEASE_RESET ();
963
+ __HAL_RCC_USART8_CLK_DISABLE ();
964
+ #endif
907
965
}
908
966
return mp_const_none ;
909
967
}
0 commit comments