From d17bc7b3a4a14ccbcdb88c4f34759cecceb9b4d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?King=20K=C3=A9vin?= Date: Wed, 17 Apr 2024 06:22:34 +0200 Subject: [PATCH] add mass erase menu --- examples/device/hid_cdc_passkey/src/main.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/examples/device/hid_cdc_passkey/src/main.c b/examples/device/hid_cdc_passkey/src/main.c index ae78120ef..9ec5c7177 100644 --- a/examples/device/hid_cdc_passkey/src/main.c +++ b/examples/device/hid_cdc_passkey/src/main.c @@ -448,6 +448,25 @@ void cdc_task(void) } } break; + case 'E': // mass erase to restart STM32 bootloader + { + + FLASH_OBProgramInitTypeDef ob; + HAL_FLASHEx_OBGetConfig(&ob); + if (OB_RDP_LEVEL_2 == ob.RDPLevel) { + str = "\r\ncan't mass erase: device locked\r\n"; + } else { + HAL_FLASH_Unlock(); + FLASH_EraseInitTypeDef EraseInitStruct; + EraseInitStruct.TypeErase = FLASH_TYPEERASE_MASSERASE; + uint32_t error; + if (HAL_FLASHEx_Erase(&EraseInitStruct, &error) != HAL_OK) { + printf("mass earse failed\r\n"); + } + HAL_FLASH_Lock(); + HAL_FLASH_OB_Launch(); // just to restart + } + } case '\r': case '\n': break; // nothing to do