From 1e297c88989592258965b69cb740039e26c7636c Mon Sep 17 00:00:00 2001 From: Damien George Date: Fri, 2 Oct 2020 17:38:56 +1000 Subject: [PATCH] stm32/main: Move update_reset_mode to outside the soft-reset loop. Running the update inside the soft-reset loop will mean that (on boards like PYBD that use a bootloader) the same reset mode is used each reset loop, eg factory reset occurs each time. Signed-off-by: Damien George --- ports/stm32/main.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/ports/stm32/main.c b/ports/stm32/main.c index f19dac0e7..7f8ee84fd 100644 --- a/ports/stm32/main.c +++ b/ports/stm32/main.c @@ -552,6 +552,11 @@ void stm32_main(uint32_t reset_mode) { MP_STATE_PORT(pyb_uart_obj_all)[MICROPY_HW_UART_REPL - 1] = &pyb_uart_repl_obj; #endif + #if !MICROPY_HW_USES_BOOTLOADER + // check if user switch held to select the reset mode + reset_mode = update_reset_mode(1); + #endif + soft_reset: #if defined(MICROPY_HW_LED2) @@ -564,11 +569,6 @@ soft_reset: led_state(3, 0); led_state(4, 0); - #if !MICROPY_HW_USES_BOOTLOADER - // check if user switch held to select the reset mode - reset_mode = update_reset_mode(1); - #endif - // Python threading init #if MICROPY_PY_THREAD mp_thread_init(); @@ -776,5 +776,8 @@ soft_reset_exit: gc_sweep_all(); + // Set reset_mode to normal boot. + reset_mode = 1; + goto soft_reset; }