summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorxyzz <1065521+xyzz@users.noreply.github.com>2021-08-02 00:27:57 -0400
committerGitHub <noreply@github.com>2021-08-02 14:27:57 +1000
commit720c676403660eacb880528f04a5c1d328b84650 (patch)
tree6beb1e84a7d91ecf2e634209cfb3eb0aff41b010
parent4b630c46fed48f8a82641438029b628ec0dd5150 (diff)
flash_stm32: don't unlock flash if already unlocked (#13841)0.13.29
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.
-rw-r--r--tmk_core/common/chibios/flash_stm32.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/tmk_core/common/chibios/flash_stm32.c b/tmk_core/common/chibios/flash_stm32.c
index e8b3dc4bc9..66f2b13768 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;
+ }
}
/**