Tôi đang cố gắng sử dụng đèn flash bên trong của STM32F405 để lưu trữ một loạt các byte có thể cài đặt của người dùng vẫn còn sau khi khởi động lại.Phân bổ bộ nhớ trong Flash cho dữ liệu người dùng (STM32F4 HAL)
Tôi đang sử dụng:
uint8_t userConfig[64] __attribute__((at(0x0800C000)));
để cấp phát bộ nhớ cho dữ liệu tôi muốn lưu trữ.
Khi chương trình bắt đầu, tôi kiểm tra để xem nếu byte đầu tiên được thiết lập để 0x42
, nếu không, tôi đặt nó bằng cách sử:
HAL_FLASH_Unlock(); HAL_FLASH_Program(TYPEPROGRAM_BYTE, &userConfig[0], 0x42); HAL_FLASH_Lock();
Sau đó tôi kiểm tra giá trị trong userConfig[0]
và tôi thấy 0x42
... Tuyệt vời!
Khi tôi nhấn reset tuy nhiên, và nhìn vào vị trí một lần nữa, nó không phải 0x42
nữa ...
Bất kỳ ý tưởng nơi tôi sẽ sai? Tôi cũng đã thử:
#pragma location = 0x0800C00 volatile const uint8_t userConfig[64]
nhưng tôi nhận được kết quả tương tự ..