STM32 Flash actuando como RAM

2

He estado tratando de programar una palabra de memoria flash en mi STM32F030F4, pero por alguna razón, cada vez que lo apago y vuelvo a encender, la ubicación de la memoria ha vuelto a "0xFFFFFFFF" de forma predeterminada. ¿Me estoy perdiendo de algo? ¿hay algo más que deba hacer para evitar que se borre la memoria al reiniciar?

Aquí está el código que estoy usando.

#define BRIGHTNESS_MEM 0x08003000

void FlashWrite(int data)
{

if(HAL_FLASH_Unlock()!=HAL_OK)
    ErrorHandler(FLASH_ERROR);

FLASH_PageErase(BRIGHTNESS_MEM);
FLASH->CR = 0;

if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, BRIGHTNESS_MEM, data) != HAL_OK)
    ErrorHandler(FLASH_ERROR);

HAL_FLASH_Lock();

}

Sé que está escribiendo la memoria porque después de una escritura puedo usar la utilidad ST-link para inspeccionar la ubicación de la memoria.

Los pasos tomados al encender para leer la ubicación de la memoria:

int *mem = (int *)BRIGHTNESS_MEM;

// Load last brightness level
setBrightness(*mem);

Sé que se puede leer de esa multa porque he probado escribir en la memoria y luego comprobar la ubicación de los datos.

    
pregunta Sensors

0 respuestas

Lea otras preguntas en las etiquetas