Ich versuche, den internen Flash eines STM32F405 zu verwenden, um eine Reihe von benutzerdefinierbaren Bytes zu speichern, die nach dem Neustart verbleiben.Speicher in Flash für Benutzerdaten zuweisen (STM32F4 HAL)
Ich verwende:
uint8_t userConfig[64] __attribute__((at(0x0800C000)));
Speicher für die Daten, die ich speichern möchten zuzuteilen.
Wenn das Programm startet, überprüfe ich, ob das erste Byte auf 0x42
wird eingestellt, um zu sehen, wenn nicht, habe ich es mit:
HAL_FLASH_Unlock(); HAL_FLASH_Program(TYPEPROGRAM_BYTE, &userConfig[0], 0x42); HAL_FLASH_Lock();
Danach prüfe ich den Wert in userConfig[0]
und ich sehe, 0x42
... Großartig!
Wenn ich jedoch schlagen zurückgesetzt und wieder an der Stelle sucht, ist es nicht mehr 0x42
...
Jede Idee, wo ich falsch gehe? Ich habe auch versucht:
#pragma location = 0x0800C00 volatile const uint8_t userConfig[64]
aber ich habe das gleiche Ergebnis ..