压力校准仪开发日志2017-12-13

完善

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
");
                return 1;
        }
        AT24CXX_Read(TheFirstRunPointEEPROMAddr,(u8 *)MainMenu_ChargeMode_point,MainMenu_flag_toChargeMode);
        printf("MainMenu_flag_toChargeMode is:%d 
",MainMenu_flag_toChargeMode);
        for(l_loopFlag2=0;l_loopFlag2<MainMenu_flag_toChargeMode;l_loopFlag2++)
        {
                    printf("上次保存的执行点 is:%d
",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
");
                }                    
        }
        /*让LCD屏幕自动选定上次执行的点   OVER*/
        
        return 0;

后来增加

 

发现  外部充气为18  这是因为  第一次使用 导致EEROM内部数据没有存储  

解决办法

在EEPROM的自检中加入 是否是第一次使用EERPOM

如果是第一次使用则  全部内存写一遍 

 

你会发现

 

 原因:

存储的数组是16位大小的  而我往外读数据  是8位大小往外读的

修改如下:

目前等待验证

原文地址:https://www.cnblogs.com/qdrs/p/8035326.html