Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ******************************************************
- // settings.c
- //
- // teplofizik
- // ******************************************************
- #include "settings.h" // Описание полей настроек
- #include "../drivers.h" // Там подключён модуль flash
- #include <string.h>
- // Хранение настроек
- TSettings Settings;
- static uint8_t * SettingsInFlash = (void *)0x080E0000UL; // Последний сектор
- // Обработчик инициализации настроек
- static void (* Handler)(void);
- static bool Save;
- static void settings_SaveDataToFlash(void)
- {
- flash_Erase(SettingsInFlash, SettingsInFlash + sizeof(Settings));
- flash_Write(&Settings, SettingsInFlash, sizeof(Settings));
- }
- // Применить изменения
- void settings_Save(void)
- {
- Save = true;
- }
- // Прочитать настройки
- void settings_Load(void)
- {
- flash_Read(&Settings, SettingsInFlash, sizeof(Settings));
- }
- // Загрузка настроек
- void settings_Init(void * DefaultHandler)
- {
- Handler = (void(*)(void))DefaultHandler;
- Save = false;
- // Загрузим
- settings_Load();
- // Проверим
- if(Settings.Magic != SETTINGS_MAGIC)
- {
- // сброс
- memset(&Settings, 0, sizeof(Settings));
- // Инициализация настроек
- Settings.Magic = SETTINGS_MAGIC;
- // Если надо настраивать - позаботьтесь сами
- if(Handler) Handler();
- // Сохраним
- settings_Save();
- }
- }
- void settings_Main(void)
- {
- if(Save)
- {
- Save = false;
- settings_SaveDataToFlash();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement