Skip to content

Commit fc5c06b

Browse files
committed
Add support for double reset tap to go into bootloader
1 parent d1135e4 commit fc5c06b

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

src/stm32f103/bluepill/config.h

+2
Original file line numberDiff line numberDiff line change
@@ -46,4 +46,6 @@
4646
#undef BOARD_ID
4747
#define BOARD_ID "STM32F103-blue-pill-v0"
4848

49+
//#define DOUBLE_TAP
50+
4951
#endif

src/stm32f103/target_stm32f103.c

+16
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,11 @@ bool target_get_force_app(void) {
198198
}
199199

200200
bool target_get_force_bootloader(void) {
201+
/* Enable GPIO clocks */
202+
rcc_periph_clock_enable(RCC_GPIOA);
203+
rcc_periph_clock_enable(RCC_GPIOB);
204+
rcc_periph_clock_enable(RCC_GPIOC);
205+
201206
bool force = true;
202207
/* Check the RTC backup register */
203208
uint32_t cmd = backup_read(BKP0);
@@ -212,8 +217,19 @@ bool target_get_force_bootloader(void) {
212217
return false;
213218
}
214219

220+
#ifdef DOUBLE_TAP
221+
target_set_led(1);
222+
// wait for second press on reset
223+
backup_write(BKP0, CMD_BOOT);
224+
for (int i = 0; i < 3500000; ++i)
225+
asm("nop");
226+
backup_write(BKP0, 0);
227+
target_set_led(0);
228+
force = false;
229+
#else
215230
// a reset now should go into app
216231
backup_write(BKP0, CMD_APP);
232+
#endif
217233

218234
#if HAVE_BUTTON
219235
/* Check if the user button is held down */

0 commit comments

Comments
 (0)