Инструменты пользователя

Инструменты сайта


ob:o7:flash

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

ob:o7:flash [2018/11/30 01:13]
ob:o7:flash [2020/10/29 07:08] (текущий)
Строка 1: Строка 1:
 +====== Сохранение данных в FLASH память микроконтроллера ======
 +
 +Часто возникает необходимость сохранить некоторые параметры работы программы в энергонезависимую память, так чтобы при перезагрузке микроконтроллера эти данные не пропали, и мы смогли их использовать для работы программы. Это могут быть, например, параметры калибровки какого-то датчика или целевая температура термостата.
 +
 +Рассмотрим сохранение данных на примере трех чисел n1, n2, n3 с помощью модуля **MicroSTM32F10xFlash**.
 +
 +Сначала надо определить номер страницы памяти, куда будем сохранять данные. Логично определить последнюю страницу памяти, так чтобы наша прошивка не пострадала от манипуляций с FLASH. Для МК 128 кб ROM адрес определим следующим образом:
 +<code>
 +
 +CONST
 +page127 = Flash.Page0 + 127 * 1024;
 +
 +</code>
 +Если у вашего МК 64кб ROM памяти, то используйте 63 вместо 127.
 +
 +Запись данных n1, n2, n3 осуществляется следующим образом:
 +<code>
 +Flash.UnLock;
 +Flash.ErasePage(page127, res);
 +IF res = Flash.complete THEN
 + Flash.Write(page127, n1, res);
 + Flash.Write(page127 + 4, n2, res);
 + Flash.Write(page127 + 8, n3, res);
 +END;
 +Flash.Lock
 +</code>
 +
 +Считывание сохраненных данных не требует использование модуля Flash.
 +
 +<code>
 +SYSTEM.GET(page127, n1);
 +SYSTEM.GET(page127 + 4, n2);
 +SYSTEM.GET(page127 + 8, n3);
 +</code>
 +
 +
 +
 +----
 +
 +Автор заметки: [[http://iadenisov.ru|И.А. Денисов]]