У вас есть функция флэш-записи, которая записывает байт, слово или двойное слово.
Если вы хотите записать свою структуру на флэш-память, самый простой способ - это просмотреть ее как буфер байтов или слов, если вы читаете ее обратно одинаково на той же платформе (и с теми же параметрами компилятора C и параметров компиляции). ). Почему такая же платформа? Потому что разные компьютерные платформы могут иметь разный порядок байтов для многобайтовых значений. Почему одинаковые параметры компилятора и компилятора? Потому что другой компилятор или другие параметры могут по-разному упаковать данные в структуру.
Итак, учитывая это, и учитывая, что вы не предоставили много подробностей о том, как должен называться ваш Flash Writer, ваш код может выглядеть так, чтобы скопировать структуру во флэш:
DataLogTypeDef my_data;
...
int i;
uint8_t *data_p = &my_data;
flash_address = //put first flash address here
for ( i = 0; i < sizeof(DataLogTypeDef); i++, data_p++, flash_address++ )
HAL_FLASH_Program(type_byte, flash_address, *data_p);
Я не знаю, каковы значения для первых двух аргументов, поэтому я просто поставил type_byte
и flash_address
. Я также предполагаю, что флэш-адрес является целочисленной формой и является байтовым адресом.
Если вы хотите прочитать структуру обратно, она может выглядеть примерно так:
// Initialize i, data_p, and flash_address first
for ( i = 0; i < sizeof(DataLogTypeDef); i++, data_p++, flash_address++ )
*data_p = Flash_read(flash_address);