Próbuję użyć wewnętrznej lampy błyskowej STM32F405, aby zachować kilka bajtów ustawialnych dla użytkownika, które pozostaną po ponownym uruchomieniu.Przydzielanie pamięci we Flashu dla danych użytkownika (STM32F4 HAL)
Używam:
uint8_t userConfig[64] __attribute__((at(0x0800C000)));
przydzielić pamięci dla danych chcę, aby przechowywać.
Po uruchomieniu programu, to należy sprawdzić, czy pierwszy bajt jest ustawiony na 0x42
, czy nie, i ustawić go przy użyciu:
HAL_FLASH_Unlock(); HAL_FLASH_Program(TYPEPROGRAM_BYTE, &userConfig[0], 0x42); HAL_FLASH_Lock();
Potem sprawdź wartość w userConfig[0]
i widzę 0x42
... Świetnie!
Kiedy uderzę zresetować jednak i spojrzeć na miejscu ponownie, to nie jest już 0x42
...
Każdy pomysł gdzie jadę nie tak? Próbowałem również:
#pragma location = 0x0800C00 volatile const uint8_t userConfig[64]
ale uzyskać ten sam rezultat ..