注册 登录
查看: 254|回复: 3

[K60] 防止flash掉参数

[复制链接]
发表于 2017-7-20 10:15:21 | 显示全部楼层 |阅读模式
我的智能车设置了 18 个储存在flash里面的参数,所以我写了一个防止掉参数的函数,就是如果开机时发现flash读入为  -1 ,就不继续从flash里面读入,而是把程序预设值写入到flash里面。
但是出现了一个问题,第一个flash总是在写入预设值之后为零,其他的都没有问题,不掉flash的时候所有flash都没有问题。
代码如下,只是部分:
void var_init()
{
    flash_init();                                       //初始化flash
    if(flash_read(VAR0_4,0, int32)==-1||flash_read(VAR0_4,8, int32)==-1)//如果读数是-1,表示flash出错了,不在从flash读入来覆盖var,相反的用var写入flash。
    {
       var_write();
       return;
    }
    else
    {
       var_read();                     
    }
}

void var_write()
{
  flash_erase_sector(VAR0_4);//擦除扇区
  flash_erase_sector(VAR5_9);//宏定义的扇区
  flash_erase_sector(VAR10_14);
  flash_erase_sector(VAR15_19);
  //写入flash数据前,需要先擦除对应的扇区(不然数据会乱)
  for(int i=0;i<=4;i++)
  {
    flash_write(VAR0_4  ,addr[i],*var_addr[i]);//addr数组保存的是数据在扇区中的偏移量
  }
  for(int i=5;i<=9;i++)
  {
    flash_write(VAR5_9  ,addr[i],*var_addr[i]);
  }
  for(int i=10;i<=14;i++)
  {
    flash_write(VAR10_14,addr[i],*var_addr[i]);
  }
  for(int i=15;i<=17;i++)
  {
    flash_write(VAR15_19,addr[i],*var_addr[i]);
  }
}




求大神指导
回复

使用道具 举报

 楼主| 发表于 2017-7-20 10:38:57 | 显示全部楼层
求山外哥和各位大神指教
回复 支持 反对

使用道具 举报

发表于 2017-7-20 11:08:55 | 显示全部楼层
掉flash,一般是没擦除就写入,或者同一个地方,反复写入2次导致的。自己找找是不是存在这种可能吧。我现在改成用山外的fwd,flash data功能,没出现过掉flash的情况。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-20 23:42:55 | 显示全部楼层
容兰芝 发表于 2017-7-20 11:08
掉flash,一般是没擦除就写入,或者同一个地方,反复写入2次导致的。自己找找是不是存在这种可能吧。我现在 ...

我是几个星期或十几天才有可能掉一次,没什么规律,好像就是读写太多掉的,而且大多数在开机的一瞬间。
请问山外的fwd,flash data功能,在哪里找呢?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回列表 返回顶部