This commit is contained in:
2025-11-05 09:26:36 +03:00
parent 345ab9df8b
commit 461a206fe7
16 changed files with 1012 additions and 418 deletions

View File

@@ -0,0 +1,49 @@
#ifndef EEPROM_EMUL_H
#define EEPROM_EMUL_H
#include "stm32f1xx_hal.h"
// Адреса для эмуляции EEPROM (последние страницы Flash)
#define EEPROM_START_ADDRESS 0x0800F000 // Последний килобайт Flash
#define EEPROM_PAGE_SIZE 1024 // Размер страницы STM32F103
#define EEPROM_SIZE 1024 // Общий размер EEPROM
// Максимальное количество переменных
#define EEPROM_MAX_VARIABLES 64
// Статусы операций
typedef enum {
EEPROM_OK = 0,
EEPROM_ERROR = 1,
EEPROM_INVALID = 2,
EEPROM_FULL = 3
} EEPROM_Status;
// Структура элемента данных
#pragma pack(push, 1)
typedef struct {
uint16_t address; // Адрес переменной (0-EEPROM_MAX_VARIABLES)
uint16_t data; // Данные
uint32_t timestamp; // Временная метка
} EEPROM_Item;
#pragma pack(pop)
// Инициализация EEPROM
EEPROM_Status EEPROM_Init(void);
// Чтение данных
EEPROM_Status EEPROM_Read(uint16_t virt_address, uint16_t* data);
// Запись данных
EEPROM_Status EEPROM_Write(uint16_t virt_address, uint16_t data);
// Массовая запись
EEPROM_Status EEPROM_WriteMultiple(uint16_t virt_address, uint8_t* data, uint16_t size);
// Получение информации о EEPROM
void EEPROM_GetInfo(uint32_t* used, uint32_t* total);
// Полное форматирование
EEPROM_Status EEPROM_Format(void);
#endif