From 720c676403660eacb880528f04a5c1d328b84650 Mon Sep 17 00:00:00 2001 From: xyzz <1065521+xyzz@users.noreply.github.com> Date: Mon, 2 Aug 2021 00:27:57 -0400 Subject: [PATCH] flash_stm32: don't unlock flash if already unlocked (#13841) On stm32f4 after reboot from DFU it was observed that the flash is already unlocked. In that case, attempting to unlock it again causes a data abort. --- tmk_core/common/chibios/flash_stm32.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tmk_core/common/chibios/flash_stm32.c b/tmk_core/common/chibios/flash_stm32.c index e8b3dc4bc98..66f2b13768b 100644 --- a/tmk_core/common/chibios/flash_stm32.c +++ b/tmk_core/common/chibios/flash_stm32.c @@ -161,9 +161,11 @@ FLASH_Status FLASH_ProgramHalfWord(uint32_t Address, uint16_t Data) { * @retval None */ void FLASH_Unlock(void) { - /* Authorize the FPEC Access */ - FLASH->KEYR = FLASH_KEY1; - FLASH->KEYR = FLASH_KEY2; + if (FLASH->CR & FLASH_CR_LOCK) { + /* Authorize the FPEC Access */ + FLASH->KEYR = FLASH_KEY1; + FLASH->KEYR = FLASH_KEY2; + } } /**