中级会员
 
- 积分
- 304
- 金钱
- 304
- 注册时间
- 2015-10-16
- 在线时间
- 49 小时
|
5金钱
一个关于flash保存相同数据替换的一个问题,发现第二次替换会死机。
void baocun()
{
u32 FLASH_QS;
u32 s1,s2,s3,s4;
u32 numnum1;
u8 datatemp[10];
u8 data[4096];
u16 shanqu;
s1=s2=s3=s4=0;
FLASH_QS=1*1024*1024; //FLASH ???????·1M
sprintf((char*)TEXT_Buffer, "%d", numnum); //学号
sprintf((char*)TEXT_Buffer1, "%d", zzcj);//成绩
csrs++;
shanqu=csrs/256+1;
while(s4==0)
{
if(s1<shanqu)
{
if(s2<256)
{
SPI_Flash_Read(datatemp,FLASH_QS+s2*16+s1*4096,10);
sscanf((const char*)datatemp,"%d",&numnum1);
if(numnum1==numnum)//比较学号是否相同,相同则把成绩替换。
{
Show_Str(60,70,200,320,"yes",16,0);
SPI_Flash_Read(data,FLASH_QS+s1*4096,4096);
for(s3=0;s3<6;s3++)
{
data[s2*16+10+s3]=TEXT_Buffer1[s3];
}
SPI_Flash_Write(data,FLASH_QS+s1*4096,4096);
csrs--;
s4=1;
}
s2++;
if(s2==256)
{
s2=0;
s1++;
}
}
}
else//学号不相同直接把成绩学号写在最后面。
{
SPI_Flash_Write(TEXT_Buffer,FLASH_QS+csrs*16-16,10);
SPI_Flash_Write(TEXT_Buffer1,FLASH_QS+csrs*16+10-16,6);
s4=1;
}
}
bc=0;
}
|
最佳答案
查看完整内容[请看2#楼]
回复【9楼】aaa405944519:
---------------------------------
裁剪代码,直到能运行为止
|