Question
STM2F4xx (ST3240G) can't clear FLASH error flags
Posted on June 01, 2012 at 16:59
I am trying to erase and program a 16KB sector (sector 2) in the STM32F405 (rev A)on the ST3240G eval board. The problem is that two error flags (PGSERR and PGPERR)are set and cannot be cleared.
Soon after a reset, still running at 16MHz on HSI, no PLL, and before any attempt to erase or write to flash I use this sequence to clear the error flags in the status register:if(FLASH_GetStatus() != FLASH_COMPLETE)
{ // clear flash error
FLASH_Unlock(); // Unlock the Flash Program Erase controller
FLASH_ClearFlag(FLASH_FLAG_PGSERR | FLASH_FLAG_PGPERR |
FLASH_FLAG_PGAERR | FLASH_FLAG_WRPERR |
FLASH_FLAG_OPERR | FLASH_FLAG_EOP); // clear error status
test = FLASH->SR; // DEBUG
FLASH_Lock(); // Lock the Flash Program Erase controller
} When I step through the code I see the FLASH->SR register set to 0x0000 00c0 before and after the call to reset the flags.
Is there a reason these error flags are set immediately after a reset? The flash programming guide says the default on reset is 0x0000 0000.
Jack Peacock
#flash #stm32f4xx-flash