L'allocation de mémoire Flash pour les données de l'utilisateur (STM32F4 HAL)

Je suis en train d'utiliser le flash interne de l'STM32F405 pour stocker un tas de paramétrables octets qui restent après le redémarrage.

Je suis en utilisant:

uint8_t userConfig[64] __attribute__((at(0x0800C000)));

d'allouer de la mémoire pour les données je veux stocker.

Lorsque le programme démarre, je vérifie pour voir si le premier octet est défini à 0x42, si ce n'est, je l'ai installé à l'aide de:

HAL_FLASH_Unlock();
HAL_FLASH_Program(TYPEPROGRAM_BYTE, &userConfig[0], 0x42);
HAL_FLASH_Lock();

Après que j'ai vérifier la valeur dans userConfig[0] et je vois 0x42... Génial!

Quand j'appuie sur reset, cependant, et de regarder à nouveau l'emplacement, il n'est pas 0x42 plus...

Une idée d'où je vais mal? J'ai aussi essayé:

#pragma location = 0x0800C00
volatile const uint8_t userConfig[64]

mais j'obtiens le même résultat..

OriginalL'auteur HammerFet | 2015-02-13