From 6c33a4bb3e61abcb2626ea2efda50da22386dc0d Mon Sep 17 00:00:00 2001 From: Alexander Paersch Date: Fri, 9 Jan 2026 10:40:43 +0000 Subject: [PATCH] Read and write to correct bank when bank swap is active. --- hal_st/stm32fxxx/FlashInternalHighCycleAreaStm.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/hal_st/stm32fxxx/FlashInternalHighCycleAreaStm.cpp b/hal_st/stm32fxxx/FlashInternalHighCycleAreaStm.cpp index 17f356ddd..ff9e5a1a3 100644 --- a/hal_st/stm32fxxx/FlashInternalHighCycleAreaStm.cpp +++ b/hal_st/stm32fxxx/FlashInternalHighCycleAreaStm.cpp @@ -25,14 +25,19 @@ namespace const ConstHalfWordRange bank1Range{ ptr(), ptr() }; const ConstHalfWordRange bank2Range{ ptr(), ptr() }; + bool IsBankSwapActive() + { + return (FLASH->OPTCR & FLASH_OPTCR_SWAP_BANK) != 0; + } + ConstHalfWordRange GetBankRange(uint32_t bank) { switch (bank) { case FLASH_BANK_1: - return bank1Range; + return IsBankSwapActive() ? bank2Range : bank1Range; case FLASH_BANK_2: - return bank2Range; + return IsBankSwapActive() ? bank1Range : bank2Range; default: std::abort(); }