@@ -252,6 +252,9 @@ bool uart_init(machine_uart_obj_t *uart_obj,
252252
253253    const  machine_pin_obj_t  * pins [4 ] =  {0 };
254254
255+     // Default pull is pull-up on RX and CTS (the input pins). 
256+     uint32_t  pins_pull [4 ] =  { GPIO_NOPULL , GPIO_PULLUP , GPIO_NOPULL , GPIO_PULLUP  };
257+ 
255258    switch  (uart_obj -> uart_id ) {
256259        #if  defined(MICROPY_HW_UART1_TX ) &&  defined(MICROPY_HW_UART1_RX )
257260        case  PYB_UART_1 :
@@ -270,6 +273,12 @@ bool uart_init(machine_uart_obj_t *uart_obj,
270273                pins [3 ] =  MICROPY_HW_UART1_CTS ;
271274            }
272275            #endif 
276+             #if  defined(MICROPY_HW_UART1_RX_PULL )
277+             pins_pull [1 ] =  MICROPY_HW_UART1_RX_PULL ;
278+             #endif 
279+             #if  defined(MICROPY_HW_UART1_CTS_PULL )
280+             pins_pull [3 ] =  MICROPY_HW_UART1_CTS_PULL ;
281+             #endif 
273282            __HAL_RCC_USART1_CLK_ENABLE ();
274283            break ;
275284        #endif 
@@ -295,6 +304,12 @@ bool uart_init(machine_uart_obj_t *uart_obj,
295304                pins [3 ] =  MICROPY_HW_UART2_CTS ;
296305            }
297306            #endif 
307+             #if  defined(MICROPY_HW_UART2_RX_PULL )
308+             pins_pull [1 ] =  MICROPY_HW_UART2_RX_PULL ;
309+             #endif 
310+             #if  defined(MICROPY_HW_UART2_CTS_PULL )
311+             pins_pull [3 ] =  MICROPY_HW_UART2_CTS_PULL ;
312+             #endif 
298313            __HAL_RCC_USART2_CLK_ENABLE ();
299314            break ;
300315        #endif 
@@ -322,6 +337,12 @@ bool uart_init(machine_uart_obj_t *uart_obj,
322337                pins [3 ] =  MICROPY_HW_UART3_CTS ;
323338            }
324339            #endif 
340+             #if  defined(MICROPY_HW_UART3_RX_PULL )
341+             pins_pull [1 ] =  MICROPY_HW_UART3_RX_PULL ;
342+             #endif 
343+             #if  defined(MICROPY_HW_UART3_CTS_PULL )
344+             pins_pull [3 ] =  MICROPY_HW_UART3_CTS_PULL ;
345+             #endif 
325346            __HAL_RCC_USART3_CLK_ENABLE ();
326347            break ;
327348        #endif 
@@ -358,6 +379,12 @@ bool uart_init(machine_uart_obj_t *uart_obj,
358379                pins [3 ] =  MICROPY_HW_UART4_CTS ;
359380            }
360381            #endif 
382+             #if  defined(MICROPY_HW_UART4_RX_PULL )
383+             pins_pull [1 ] =  MICROPY_HW_UART4_RX_PULL ;
384+             #endif 
385+             #if  defined(MICROPY_HW_UART4_CTS_PULL )
386+             pins_pull [3 ] =  MICROPY_HW_UART4_CTS_PULL ;
387+             #endif 
361388            break ;
362389        #endif 
363390
@@ -393,6 +420,12 @@ bool uart_init(machine_uart_obj_t *uart_obj,
393420                pins [3 ] =  MICROPY_HW_UART5_CTS ;
394421            }
395422            #endif 
423+             #if  defined(MICROPY_HW_UART5_RX_PULL )
424+             pins_pull [1 ] =  MICROPY_HW_UART5_RX_PULL ;
425+             #endif 
426+             #if  defined(MICROPY_HW_UART5_CTS_PULL )
427+             pins_pull [3 ] =  MICROPY_HW_UART5_CTS_PULL ;
428+             #endif 
396429            break ;
397430        #endif 
398431
@@ -419,6 +452,12 @@ bool uart_init(machine_uart_obj_t *uart_obj,
419452                pins [3 ] =  MICROPY_HW_UART6_CTS ;
420453            }
421454            #endif 
455+             #if  defined(MICROPY_HW_UART6_RX_PULL )
456+             pins_pull [1 ] =  MICROPY_HW_UART6_RX_PULL ;
457+             #endif 
458+             #if  defined(MICROPY_HW_UART6_CTS_PULL )
459+             pins_pull [3 ] =  MICROPY_HW_UART6_CTS_PULL ;
460+             #endif 
422461            __HAL_RCC_USART6_CLK_ENABLE ();
423462            break ;
424463        #endif 
@@ -447,6 +486,12 @@ bool uart_init(machine_uart_obj_t *uart_obj,
447486                pins [3 ] =  MICROPY_HW_UART7_CTS ;
448487            }
449488            #endif 
489+             #if  defined(MICROPY_HW_UART7_RX_PULL )
490+             pins_pull [1 ] =  MICROPY_HW_UART7_RX_PULL ;
491+             #endif 
492+             #if  defined(MICROPY_HW_UART7_CTS_PULL )
493+             pins_pull [3 ] =  MICROPY_HW_UART7_CTS_PULL ;
494+             #endif 
450495            break ;
451496        #endif 
452497
@@ -474,6 +519,12 @@ bool uart_init(machine_uart_obj_t *uart_obj,
474519                pins [3 ] =  MICROPY_HW_UART8_CTS ;
475520            }
476521            #endif 
522+             #if  defined(MICROPY_HW_UART8_RX_PULL )
523+             pins_pull [1 ] =  MICROPY_HW_UART8_RX_PULL ;
524+             #endif 
525+             #if  defined(MICROPY_HW_UART8_CTS_PULL )
526+             pins_pull [3 ] =  MICROPY_HW_UART8_CTS_PULL ;
527+             #endif 
477528            break ;
478529        #endif 
479530
@@ -485,6 +536,9 @@ bool uart_init(machine_uart_obj_t *uart_obj,
485536            __HAL_RCC_UART9_CLK_ENABLE ();
486537            pins [0 ] =  MICROPY_HW_UART9_TX ;
487538            pins [1 ] =  MICROPY_HW_UART9_RX ;
539+             #if  defined(MICROPY_HW_UART9_RX_PULL )
540+             pins_pull [1 ] =  MICROPY_HW_UART9_RX_PULL ;
541+             #endif 
488542            break ;
489543        #endif 
490544
@@ -502,6 +556,9 @@ bool uart_init(machine_uart_obj_t *uart_obj,
502556            #endif 
503557            pins [0 ] =  MICROPY_HW_UART10_TX ;
504558            pins [1 ] =  MICROPY_HW_UART10_RX ;
559+             #if  defined(MICROPY_HW_UART10_RX_PULL )
560+             pins_pull [1 ] =  MICROPY_HW_UART10_RX_PULL ;
561+             #endif 
505562            break ;
506563        #endif 
507564
@@ -527,6 +584,12 @@ bool uart_init(machine_uart_obj_t *uart_obj,
527584                pins [3 ] =  MICROPY_HW_LPUART1_CTS ;
528585            }
529586            #endif 
587+             #if  defined(MICROPY_HW_LPUART1_RX_PULL )
588+             pins_pull [1 ] =  MICROPY_HW_LPUART1_RX_PULL ;
589+             #endif 
590+             #if  defined(MICROPY_HW_LPUART1_CTS_PULL )
591+             pins_pull [3 ] =  MICROPY_HW_LPUART1_CTS_PULL ;
592+             #endif 
530593            __HAL_RCC_LPUART1_CLK_ENABLE ();
531594            break ;
532595        #endif 
@@ -551,6 +614,12 @@ bool uart_init(machine_uart_obj_t *uart_obj,
551614                pins [3 ] =  MICROPY_HW_LPUART2_CTS ;
552615            }
553616            #endif 
617+             #if  defined(MICROPY_HW_LPUART2_RX_PULL )
618+             pins_pull [1 ] =  MICROPY_HW_LPUART2_RX_PULL ;
619+             #endif 
620+             #if  defined(MICROPY_HW_LPUART2_CTS_PULL )
621+             pins_pull [3 ] =  MICROPY_HW_LPUART2_CTS_PULL ;
622+             #endif 
554623            __HAL_RCC_LPUART2_CLK_ENABLE ();
555624            break ;
556625        #endif 
@@ -564,10 +633,7 @@ bool uart_init(machine_uart_obj_t *uart_obj,
564633
565634    for  (uint  i  =  0 ; i  <  4 ; i ++ ) {
566635        if  (pins [i ] !=  NULL ) {
567-             // Configure pull-up on RX and CTS (the input pins). 
568-             uint32_t  pull  =  (i  &  1 ) ? MP_HAL_PIN_PULL_UP  : MP_HAL_PIN_PULL_NONE ;
569-             bool  ret  =  mp_hal_pin_config_alt (pins [i ], mode , pull , uart_fn , uart_unit );
570-             if  (!ret ) {
636+             if  (!mp_hal_pin_config_alt (pins [i ], mode , pins_pull [i ], uart_fn , uart_unit )) {
571637                return  false;
572638            }
573639        }
0 commit comments