您好,我在使用STM32G0B1VC做IAP功能时遇到一个很奇怪的现象,我为Bootloader分配了0x08000000~0x0800FFFF共64KB的大小,为出厂程序分配了0x08010000~0x0801FFFF共64KB的大小,为之后的程序更新分配了0x08020000~0x0803FFFF共128KB的大小,在更新0x08020000~0x0803FFFF区域前,我需要先对这部分区域进行擦除,但总是擦除函数打断点却进不去,查阅网上资料也没头绪,请问可能是什么原因?是需要解除写保护?但是当该区域全部为FF的状态下又能写成功,求请教。
HAL_StatusTypeDef FLASH_If_Erase(uint32_t start)
{
uint32_t NbrOfPages = 0;
uint32_t PageError = 0;
FLASH_EraseInitTypeDef pEraseInit;
HAL_StatusTypeDef status = HAL_OK;
HAL_FLASH_Unlock();
NbrOfPages = (FLASH_START_ADRESS + FLASH_SIZE);
NbrOfPages = (NbrOfPages - start) / FLASH_PAGE_SIZE;
pEraseInit.Banks = FLASH_BANK_1;
pEraseInit.NbPages = NbrOfPages; //64
pEraseInit.Page = LASH_PAGE_NBPERBANK - pEraseInit.NbPages;//128-64=64
pEraseInit.TypeErase = FLASH_TYPEERASE_PAGES;
status = HAL_FLASHEx_Erase(&pEraseInit, &PageError);
HAL_FLASH_Lock();
return status;
}