Sto provando a utilizzare il flash interno di un STM32F405 per memorizzare un gruppo di byte impostabili dall'utente che rimangono dopo il riavvio.Allocazione della memoria in Flash per i dati utente (STM32F4 HAL)
sto usando:
uint8_t userConfig[64] __attribute__((at(0x0800C000)));
allocare memoria per i dati che voglio per memorizzare.
All'avvio del programma, controllo per vedere se il primo byte è impostato su 0x42
, se non, ho impostato utilizzando:
HAL_FLASH_Unlock(); HAL_FLASH_Program(TYPEPROGRAM_BYTE, &userConfig[0], 0x42); HAL_FLASH_Lock();
Dopo che controllo il valore nel userConfig[0]
e vedo 0x42
... fantastico!
Quando mi ha colpito azzerato però, e cerca nella posizione ancora una volta, non è più ... 0x42
Hai idea di dove sto andando male? Ho anche provato:
#pragma location = 0x0800C00 volatile const uint8_t userConfig[64]
ma ottengo lo stesso risultato ..