Question
Writing in flash is not working
Hi,
im new for Stm32. I want to write 4 numbers in the flash but always get an error message (status = HAL_ERROR while writing in flash). In my function I write the numbers in an array and want to write the individual elements into the flash.
The variables (zahlx) are uint8_t.
Can anyone tell me what I am doing wrong?
void save_to_flash(int wahl)
{
volatile uint32_t write_cnt = 0, index = 0;
volatile uint32_t data_to_FLASH[4];
memset((uint8_t*)data_to_FLASH, 0,strlen((char*)data_to_FLASH));
switch (wahl)
{
case 1:
data_to_FLASH[0] = zahl1;
data_to_FLASH[1] = zahl2;
data_to_FLASH[2] = zahl3;
data_to_FLASH[3] = zahl4;
write_cnt = 0;
break;
case 2:
data_to_FLASH[0] = zahl5;
data_to_FLASH[1] = zahl6;
data_to_FLASH[2] = zahl7;
data_to_FLASH[3] = zahl8;
write_cnt = 10;
break;
}
HAL_FLASH_Unlock();
HAL_FLASH_OB_Unlock();
FLASH_EraseInitTypeDef EraseInitStruct;
EraseInitStruct.TypeErase = FLASH_TYPEERASE_PAGES;
EraseInitStruct.Page = 127;
EraseInitStruct.NbPages = 1;
uint32_t PageError;
volatile HAL_StatusTypeDef status;
status = HAL_FLASHEx_Erase(&EraseInitStruct, &PageError);
if(status == HAL_OK)
{
while(index < 4)
{
status = HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD,FLASH_STORAGE+write_cnt, data_to_FLASH[index]);
if(status == HAL_OK)
{
write_cnt +=4;
index++;
}
}
}
HAL_FLASH_OB_Lock();
HAL_FLASH_Lock();
}