加入EEPROM存储系统设置

This commit is contained in:
不吃油炸鸡
2025-10-19 12:13:34 +08:00
parent 8020819bc0
commit 11f27e60a3
2 changed files with 37 additions and 24 deletions

View File

@@ -5,7 +5,7 @@ SysSettings_T sys_settings = {
.backlight_level = 80, .backlight_level = 80,
.key_sound_enable = 1, .key_sound_enable = 1,
.language_select = 0, .language_select = 0,
.rotation = 0 .rotation = 180
}; };
static void BL24C02_Write(uint8_t addr, uint16_t length, uint8_t buff[]) static void BL24C02_Write(uint8_t addr, uint16_t length, uint8_t buff[])
@@ -33,8 +33,8 @@ EEPROM Data description:
*******************************************/ *******************************************/
//to check the Data is right and the EEPROM is working // to check the Data is right and the EEPROM is working
uint8_t EEPROM_Check(void) uint8_t EEPROM_Init_Check(void)
{ {
uint8_t check_buff[2]; uint8_t check_buff[2];
delay_ms(10); delay_ms(10);
@@ -59,27 +59,40 @@ uint8_t EEPROM_Check(void)
} }
//to Save the settings // to Save the settings
uint8_t SettingSave(uint8_t *buf, uint8_t addr, uint8_t lenth) void Sys_Setting_Save(void)
{ {
if(addr > 1 && !EEPROM_Check()) uint8_t buff[5];
{ buff[0] = sys_settings.backlight_level;
delay_ms(10); buff[1] = sys_settings.key_sound_enable;
BL24C02_Write(addr,lenth,buf); buff[2] = sys_settings.language_select;
return 0; buff[3] = (uint8_t)(sys_settings.rotation & 0x00FF);
} buff[4] = (uint8_t)((sys_settings.rotation >> 8) & 0x00FF);
return 1; BL24C02_Write(0x10,5,buff);
} }
//to Get the settings // to Get the settings
uint8_t SettingGet(uint8_t *buf, uint8_t addr, uint8_t lenth) void Sys_Setting_Get(void)
{ {
if(addr > 1 && !EEPROM_Check()) uint8_t buff[5];
{ BL24C02_Read(0x10,5,buff);
delay_ms(10); // 判断是否在范围内
BL24C02_Read(addr,lenth,buf); if(buff[0] <= 100)
return 0; sys_settings.backlight_level = buff[0];
} else
return 1; sys_settings.backlight_level = 80;
if(buff[1] <= 1)
sys_settings.key_sound_enable = buff[1];
else
sys_settings.key_sound_enable = 1;
if(buff[2] <= 1)
sys_settings.language_select = buff[2];
else
sys_settings.language_select = 0;
uint16_t rotation = (uint16_t)buff[3] | ((uint16_t)buff[4] << 8);
if(rotation == 0 || rotation == 90 || rotation == 180 || rotation == 270)
sys_settings.rotation = rotation;
else
sys_settings.rotation = 180;
} }

View File

@@ -14,8 +14,8 @@ typedef struct {
extern SysSettings_T sys_settings; extern SysSettings_T sys_settings;
uint8_t EEPROM_Check(void); uint8_t EEPROM_Init_Check(void);
uint8_t SettingSave(uint8_t *buf, uint8_t addr, uint8_t lenth); void Sys_Setting_Save(void);
uint8_t SettingGet(uint8_t *buf, uint8_t addr, uint8_t lenth); void Sys_Setting_Get(void);
#endif #endif