大家好!
STM32F429IGT6芯片有一个内部flash,大小为1MB,默认是1个bank,12个sector。
手册里有说,可以设置为双bank模式,即每个bank大小为512KB,每个bank有8个sector。
HAL_StatusTypeDef SetFlashDoubleBank(void)
{
HAL_StatusTypeDef status = HAL_ERROR;
//celar all flags
__HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR
| FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR);
/* Wait for last opera
tion to be completed */
status = FLASH_WaitForLastOperation((uint32_t)FLASH_WAIT_TIMEOUT_VALUE);
if(status != HAL_OK)
return HAL_ERROR;
//1 UNLOCK
if(HAL_FLASH_OB_Unlock() != HAL_OK)
{
return HAL_ERROR;
}
//2 SET DOUBLE BANK BIT
FLASH->OPTCR |= FLASH_OPTCR_DB1M;
//3 LAUNCH THE OPTION BTYES
if(HAL_FLASH_OB_Launch() != HAL_OK)
{
return HAL_ERROR;
}
//4 LOCK
if(HAL_FLASH_OB_Lock() != HAL_OK)
{
return HAL_ERROR;
}
return HAL_OK;
}
笔者使用这个函数将flash配置为双bank。但是问题来了,cpu经常坏掉,无法烧写,请大神们帮忙分析一下,如果在配置双bank时断电,会不会造成内部flash损坏?还有,如果内部flash损坏,将boot模式设置为ram启动,cpu能否启动?