- 打卡等级:常住居民III
- 打卡总天数:120
- 最近打卡:2025-10-09 08:31:43
高级会员
- 积分
- 856
|
发表于 2025-10-8 15:41:21
|
显示全部楼层
图片代码看着很好,不能直接用,识别出来贴一下:
staticvolatileunsignedintSum_Ms=0;
staticvolatileunsigned char Sum_Flag=0;
void Sum_Reset(void)
Sum_Ms=0;
Sum_Flag=0;
//1ms定时器中断里面运行
测试就直接Sum_Ms>=1让eeprom直存数了
void Sum_Timer_Process(void)
Sum_Ms++;
if(Sum_Ms>=
1
Sum_Ms=0;
Sum_Flag=1;
void APp_Sum_Process(unsignedint *p_timer_delay_ms)
if(1==Sum_Flag)
Sum_Flag=0;
Measured_Sum_Value +=1;
Mdata_Write_Long(APp_Section,MEM_SUM_VAL,Measured_Sum_Value);
if(Measured_Sum_Value 1=Mdata_Read_Long(APP_Section,MEM_SUM_VAL,0,99999999,θ))
Measured_Sum_Value-=1;
ERR_State=1;//报错
//APP_Section=2;MEM_SUM_VAL=0;
void Mdata_Write_Long(unsigned char section,unsigned int addr,signed long dat)
unsignedinti;
for(i=0;i<EEPROM_BUF_LENGTH;i++)EEPROM_BUF[i]=EEPROM_Read(seCtion,i);
EEPROM_BUF[addr]=dat>>16;
EEPROM_BUF[addr+1]=dat&0Xe00OFFFFL;
IapErase(512UL*section);//擦除第N片区
for(i=O;i<EEPROM_BUF_LENGTH;i++)EEPROM_Write(SeCtion,i,EEPROM_BUF[i]);
signed long Mdata_Read_Long(unsigned char section,unsigned int addr,signed long min,signed long max,signed long def)
signed longdat;
dat=EEPROM_Read(section,addr);
dat<<=16;
dat|=(EEPROM_Read(section,addr+1)&eXOO0OFFFFL);
if(dat>max1|dat<min)dat=def;
return dat;
signed int EEPROM_Read(unsigned int section,unsigned intaddr)
signed int dat;
addr=section*512+addr*2;
dat=IapRead(addr);
dat<<=8;
dat=dat|(IapRead(addr+1)&ex00FF);
returndat;
void EEPROM_Write(unsigned int section,unsigned int addr,signed int dat)
IapProgram(section *512+addr*2,(unsigned char)(dat>>8));
IapProgram(section*512+addr*2+1,(unsignedchar)(dat&oxeoFF));
unsigned char EEPRoM_Test(unsigned char section)
unsigned int i;
unsigned char dat;
IapErase(512UL*section);//除第N片区
for(i=0;i<512;i++)
dat=IapRead(512UL*section+i);
if(θxFFI=dat)return 1;
for(i=0;i<512;i++
IapProgram(512UL*section+i,0x00);
for(i=0;i<512;i++)
dat=IapRead(512UL*section+i);
if(exeeI=dat)return 1;
return0;
|
|