il-2 (08.12.2016 12:09 - 12:13, просмотров: 65) ответил Ljutik1 на как правильно писать данные во FLASH STM32F072RBT6?
Навскидку, не заглядывая в даташит - писать можно по любому адресу. При стирании можно указать тоже любой адрес, будет стерт весь сектор. Чтобы в секторе не оказалось ничего нужного, нужно объявить массив размером в сектор и выровненный по границе сектора. Как-то так:
static union
{
__packed struct
{
uint16_t var1;
uint32_t var2;
uint16_t array1[ARRAY1_SZ];
uint16_t array2[ARRAY2_SZ];
};
uint8_t Data[FLASH_PAGE_CNT * FLASH_PAGE_SZ];
} const FlashBlock __attribute__ ((aligned(FLASH_PAGE_SZ))) =
{
VAR1_INIT_VALUE,
VAR2_INIT_VALUE,
{
ARRAY1_INIT_VALUE0, ..
},
{
ARRAY2_INIT_VALUE0, ..
}
};