bool Config::saveConfigFlash(){
uint32_t pageError;
FLASH_EraseInitTypeDef pEraseInit;
pEraseInit.Banks = FLASH_BANK_2;
pEraseInit.NbPages = 1;
pEraseInit.Page = 127;
pEraseInit.TypeErase = FLASH_TYPEERASE_PAGES;
//currentConfig is the struct I want to save in Flash
static uint64_t data[1 + sizeof(TerrariumConfig)/sizeof(uint64_t)];
memcpy(data, (void*) ¤tConfig, sizeof(TerrariumConfig));
HAL_StatusTypeDef status = HAL_FLASH_Unlock();
SET_BIT(FLASH->SR, FLASH_SR_PGSERR);
status = HAL_FLASHEx_Erase(&pEraseInit, &pageError);
for(unsigned int i = 0; i < 1 + sizeof(TerrariumConfig)/sizeof(uint64_t); i++)
{
//write the data, with 64bit alignment
status = HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, addressDataFlash + i*8, data[i]);
}
FLASH_FlushCaches();
HAL_FLASH_Lock();
return true;
}