完善
lcdcommand.c
/* 自动保存 上一次运行的点 下一次开机自动选择 清零按键可以取消它 return : 1: OK 0: ERROR 每次清零之后 每次执行之后都要运行此函数 */ u8 SavePreRunPoint(void) { u8 l_u8ForWhile=0; u8 l_u8ForSaveParWhile=0; //AT24CXX_Write(CountOfPreRunPointEEPROMAddr,(u8*)u16a_DownPressPara,1); AT24CXX_WriteOneByte(CountOfPreRunPointEEPROMAddr,MainMenu_flag_toChargeMode); AT24CXX_Write(TheFirstRunPointEEPROMAddr,(u8*)MainMenu_ChargeMode_point,MainMenu_flag_toChargeMode); return 1; }
完善
u8 StartCheck_DisInit(void)
/*开机后的一些参数的清零 HEAD*/ for(l_i=0x0000;l_i<0x000D+1;l_i++)//~~~~~~~~!!!!!!!!!!!!!!!!!! 开机主界面自动清空 { DisplayOneWord(l_i,0x0000); delay_ms(20); } MainMenu_flag_toChargeMode=0; memset(MainMenu_ChargeMode_point,0,5*sizeof(u16)); g_u8MotorRunningFlag=0; g_u8Flag_UPorDOWN=0; // 这个必须手动清零 g_u8Flag_ExternalAdd=0; /*开机后的一些参数的清零 END*/ /*读取打印SavePreRunPoint 函数中保存的上一次的设定点的EEPROM数据*/ MainMenu_flag_toChargeMode=AT24CXX_ReadOneByte(CountOfPreRunPointEEPROMAddr); if(MainMenu_flag_toChargeMode>6) //出现错误 根本没有那么多的运行点 EERPOM读写可能存在错误 编码:EA1 { printf("出现错误 EERPOM读写可能存在错误,编码:EA1\r\n"); return 1; } AT24CXX_Read(TheFirstRunPointEEPROMAddr,(u8 *)MainMenu_ChargeMode_point,MainMenu_flag_toChargeMode); printf("MainMenu_flag_toChargeMode is:%d \r\n",MainMenu_flag_toChargeMode); for(l_loopFlag2=0;l_loopFlag2<MainMenu_flag_toChargeMode;l_loopFlag2++) { printf("上次保存的执行点 is:%d\r\n",MainMenu_ChargeMode_point[l_loopFlag2]); } /*读取打印SavePreRunPoint 函数中保存的上一次的设定点的EEPROM数据 over*/ /*让LCD屏幕自动选定上次执行的点*/ for(l_loopFlag2=0;l_loopFlag2 < MainMenu_flag_toChargeMode;l_loopFlag2++) { if(MainMenu_ChargeMode_point[l_loopFlag2]<6) { DisplayOneWord((MainMenu_ChargeMode_point[l_loopFlag2]+5),0x0001); delay_ms(20); } else { printf("出现错误 EERPOM读写可能存在错误,编码:EA2\r\n"); } } /*让LCD屏幕自动选定上次执行的点 OVER*/ return 0;
后来增加
发现 外部充气为18 这是因为 第一次使用 导致EEROM内部数据没有存储
解决办法
在EEPROM的自检中加入 是否是第一次使用EERPOM
如果是第一次使用则 全部内存写一遍
你会发现
原因:
存储的数组是16位大小的 而我往外读数据 是8位大小往外读的
修改如下:
目前等待验证