打印

重复开机多次的情况下,EEPROM数据会丢失

[复制链接]
1176|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhenykun|  楼主 | 2015-1-6 19:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
liliang9554| | 2015-1-6 19:49 | 只看该作者
源程序看看

使用特权

评论回复
板凳
zhenykun|  楼主 | 2015-1-6 19:51 | 只看该作者

//****************************************************************************
//Main Routing
//
//*****************************************************************************

int main(void)
{
   Various_Init();
    if(REVISION_IS_A2)
    {
     SysCtlLDOSet(SYSCTL_LDO_2_75V);
    }
    SysCtlClockSet(SYSCTL_SYSDIV_3| SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |
                   SYSCTL_XTAL_8MHZ);   
   Led_Init();                          //LED4 LED0(x) LED1 LED2 LED3
    Uart_Init();
  SysCtlPeripheralEnable(SYSCTL_PERIPH_EEPROM0);
  EEPROMInit();
    Key_Init();
  
  Learnned_Flags_Init();                            //read the learnned flags
  Nos_Cnt_Start();
   Beep_Init();
  Pressure_Set_Init();                              //read the setting data from EEPROM
// Pressure_Measure_Init();
  Pressure_Unit_Init();                             //read the unit for pressure from EEPROM
  ID_Init();                                        //read the learned ID
// Temperature_Measure_Init();     
  Temperature_Unit_Init();                          //read the unit for temperature from EEPROM
// Get_NOS_Leaking_Alarm();
  //  Get_Other_Alarm();
  
  Kitronix320x240x16_SSD2119Init();
  GrContextInit(&sContext,&g_sKitronix320x240x16_SSD2119);
  Clean_Screen_With_Nothing();
  GrContextFontSet(&sContext, &g_sFontCmss20b);  //设置字体
  GrContextForegroundSet(&sContext,ClrWhite);
  
   Timer_Init(50000,60000);   //50000    //50MHZ frequency,per instruction time 0.02us so,50000x0.02=1ms
   TimerEnable(TIMER0_BASE,TIMER_A);       //LED4显示定时器在工作
  
   
//////////////////////////////////////////////////////////////////
  
////    Power_On_Display_Tesee();             //power on display icon
////   Delay_10ms(1000);
//    Clean_Screen_With_Nothing();
//    GrImageDraw(&sContext,g_pucCar,POS_CAR_X,POS_CAR_Y); //display car icon
//     Power_On_Display_Frame();
//  PWM_Init();                             //LED2显示PWM在工作
   
while(1)
{  
////Pressure_Unit_Init();
////Temperature_Unit_Init();  
if(bfrs_main_flag==0)
{  
Clean_Screen_With_Nothing();
GrImageDraw(&sContext,g_pucCar,POS_CAR_X,POS_CAR_Y); //display car icon
  Power_On_Display_Frame();
Data2Disbuf();
  Display_Disbuf();
  GrFlush(&sContext);
  bfrs_main_flag=1;
  }
  
   EEPROMRead(read,0x33,0x08);
  write_temp=read[0];
   LongNumber2String(disbuf,write_temp);
  GrStringDraw(&sContext,disbuf,100,1,120,0);
  write_temp=read[1];
   LongNumber2String(disbuf,write_temp);
  GrStringDraw(&sContext,disbuf,100,1,140,0);
////Pressure_Set_Init();
  Key_Scan();
////ID_Init();

////Receive_Data();
GrContextFontSet(&sContext, &g_sFontCmss20b);  //设置字体
  GrStringDraw(&sContext,RxBuf,30,0,130,0);

  if(g_uckeyvalue==OK)
   {
   EEPROMProgram(write,0x33,0x08);
  write[0]=0x01;
  EEPROMProgram(write,EE_ADD_FLAG_UNIT_PRESSURE,0x04);
  g_uckeyvalue=0;
  }
if(g_uckeyvalue==SET)
  {
  ucloop_m_flag=1;
  ucfrs_m_enter=0;
}
if(g_uckeyvalue==UP)
  {
  g_uckeyvalue=0;
  uctemp_m_UL++;
  ulpressure_m_UL++;
}
if(g_uckeyvalue==DOWN)
  {
  g_uckeyvalue=0;
  uctemp_m_UL--;
  ulpressure_m_UL--;
}

//// Manue_Routing();
//// Alarm_Routing();

   
if((bflag_ul_nos==1)||(bflag_ul_nos==1)||(bflag_ul_nos==1)||(bflag_ul_nos==1)||(bflag_ul_nos==1))
{
  UARTPutString("NOS WARNING!!!",UART1_BASE);   
   UARTCharPut(UART1_BASE,'\n');
  }
}
}

使用特权

评论回复
地板
zhenykun|  楼主 | 2015-1-6 19:51 | 只看该作者
我把程序中很多子函数都屏蔽掉,只用了显示和按键检测跟读写EEPROM的子函数,然后就频繁的开关机

使用特权

评论回复
5
heweibig| | 2015-1-6 19:53 | 只看该作者
这么做为什么啊

使用特权

评论回复
6
zhenykun|  楼主 | 2015-1-6 19:54 | 只看该作者
目的就是验证到底是函数调用的部分影响到了EEPROM还是EEPROM本身的问题.

使用特权

评论回复
7
zhenykun|  楼主 | 2015-1-6 19:54 | 只看该作者
现在情况是,在不确定的是次数时候EEPROM会丢失.

使用特权

评论回复
8
zhaoxqi| | 2015-1-6 19:56 | 只看该作者
把EEPROM换在别的存储地址下写,看还会出现这种情况?

使用特权

评论回复
9
zhenykun|  楼主 | 2015-1-6 19:56 | 只看该作者
会.

使用特权

评论回复
10
huangchui| | 2015-1-6 19:58 | 只看该作者
一边写EEPROM,一边复位MCU?不带这样用的。

使用特权

评论回复
11
huangchui| | 2015-1-6 19:58 | 只看该作者

所谓丢数据是指写成功后,不写了,随便上下电掉数据,那才叫丢

使用特权

评论回复
12
shimx| | 2015-1-6 20:00 | 只看该作者
嗯,
你这个最多是写失败,而且写失败的原因是你在EEPROM还没有写完的时候就让MCU复位了,这样能写的进吗?

使用特权

评论回复
13
zhenykun|  楼主 | 2015-1-6 20:00 | 只看该作者
哦,懂了,谢谢

使用特权

评论回复
14
zhenykun|  楼主 | 2015-1-6 20:00 | 只看该作者
结贴了哈

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

868

主题

11535

帖子

3

粉丝