Skip to content

Commit ceff433

Browse files
committed
stm32/mboot: Adjust user-reset-mode timeout so it ends with mode=1.
If the user button is held down indefinitely (eg unintenionally, or because the GPIO signal of the user button is connected to some external device) then it makes sense to end the reset mode cycle with the default mode of 1, which executes code as normal.
1 parent 564abb0 commit ceff433

1 file changed

Lines changed: 4 additions & 3 deletions

File tree

ports/stm32/mboot/main.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1011,11 +1011,12 @@ static int get_reset_mode(void) {
10111011
int reset_mode = 1;
10121012
if (usrbtn_state()) {
10131013
// Cycle through reset modes while USR is held
1014+
// Timeout is roughly 20s, where reset_mode=1
10141015
systick_init();
10151016
led_init();
10161017
reset_mode = 0;
1017-
for (int i = 0; i < 1000; i++) {
1018-
if (i % 30 == 0) {
1018+
for (int i = 0; i < 1024; i++) {
1019+
if (i % 32 == 0) {
10191020
if (++reset_mode > 4) {
10201021
reset_mode = 1;
10211022
}
@@ -1027,7 +1028,7 @@ static int get_reset_mode(void) {
10271028
if (!usrbtn_state()) {
10281029
break;
10291030
}
1030-
mp_hal_delay_ms(20);
1031+
mp_hal_delay_ms(19);
10311032
}
10321033
// Flash the selected reset mode
10331034
for (int i = 0; i < 6; i++) {

0 commit comments

Comments
 (0)