📄 data_backup.c
字号:
#include "Spmc75_regs.h"
#include "mcMACRO.h"
#include "IIC_Diver.h"
#include "Backup_VAR.h"
extern const unsigned int Init_Data_Dackup[];
unsigned int EEPROM_Err;
int SAVE_Flag = 0;
//=================================================================================================
// ----Function: void Backup_Data_Read(unsigned int *Data_Temp,int Data_NUM);
// -Description: 有效数据读取程序
// --Parameters: None
// -----Returns: None
// -------Notes:
//=================================================================================================
void Backup_Data_Read(unsigned int *Data_Temp,int Data_NUM)
{
unsigned int Adr_Temp;
Adr_Temp = 1 + Data_NUM * 5; //数据指针计算,一个数据项为8字节
Data_Temp[0] = Backup_VAR[Data_NUM]; //获取参数备份区的数据值
Data_Temp[1] = Init_Data_Dackup[Adr_Temp]; //数据Q值
Adr_Temp ++;
Data_Temp[2] = Init_Data_Dackup[Adr_Temp]&0x000f; //数据属性
Data_Temp[3] = (Init_Data_Dackup[Adr_Temp] >> 4)&0x000f;//数据的存贮属性
Adr_Temp ++;
Data_Temp[4] = Init_Data_Dackup[Adr_Temp]; //数据的最小值
Adr_Temp ++;
Data_Temp[5] = Init_Data_Dackup[Adr_Temp]; //数据的最大值
}
//=================================================================================================
// ----Function: unsigned int Backup_Read(int Data_NUM);
// -Description: 读取EEPROM中的数据
// --Parameters: None
// -----Returns: None
// -------Notes:
//=================================================================================================
unsigned int Backup_Read(int Data_NUM)
{
unsigned int Add_Temp,Data_Temp;
Add_Temp = Data_NUM * 2;
Data_Temp = IIC_Read_B(Add_Temp); //数据值
Add_Temp ++;
Data_Temp = Data_Temp*256 + IIC_Read_B(Add_Temp);
return(Data_Temp);
}
//=================================================================================================
// ----Function: void Data_Write(int Data_NUM,unsigned int Data);
// -Description: 写入一个数据
// --Parameters: None
// -----Returns: None
// -------Notes:
//=================================================================================================
void Data_Write(int Data_NUM,unsigned int Data)
{
Data_NUM = Data_NUM * 2;
IIC_Write_B(Data_NUM,(Data >> 8)&0xff);
Data_NUM ++;
IIC_Write_B(Data_NUM,Data&0xff);
}
//=================================================================================================
// ----Function: void EEPROM_Format(void);
// -Description: EEPROM格式化,包括出厂数据载入
// --Parameters: None
// -----Returns: None
// -------Notes:
//=================================================================================================
void EEPROM_Format(int Set)
{
int i;
unsigned int *P_Data;
P_Data = (unsigned int *)Init_Data_Dackup;
if(Set > 0)
{
for(i = 0;i < 45;i ++)
{
Data_Write(i,*P_Data); //写入一组数据
P_Data += 5; //指向下一组
}
P_Data += 25;
for(i = 50;i < 75;i ++)
{
Data_Write(i,*P_Data); //写入一组数据
Backup_VAR[i] = *P_Data;
P_Data += 5; //指向下一组
}
}
else
{
for(i = 0;i < Init_Data_Dackup[0];i ++)
{
Data_Write(i,*P_Data); //写入一组数据
Backup_VAR[i] = *P_Data;
P_Data += 5; //指向下一组
}
}
}
//=================================================================================================
// ----Function: void Save_define(void);
// -Description: 参数保存
// --Parameters: None
// -----Returns: None
// -------Notes:
//=================================================================================================
void Save_define(void)
{
SAVE_Flag = 1;
Data_Write(0,Backup_VAR[0]); //数据写入,只是数据值,其它数据由存贮初始化决定
Data_Write(1,Backup_VAR[1]);
SAVE_Flag = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -