diff --git a/hal_st/stm32fxxx/FlashInternalHighCycleAreaStm.cpp b/hal_st/stm32fxxx/FlashInternalHighCycleAreaStm.cpp index 17f356dd..ff9e5a1a 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(); }