#include "app_config.h" //#include "../tpc/tpc_uart.h" ///#include "../bsp/bsp_cs1232.h" #include "msp_eeprom.h" ///#include "../msp/msp_id.h" #include "debug_drv.h" #include "msp_uartN.h" TS_GlobalRegisterSave_ S; ////TS_GlobalParam_ G; GlobalRegister R; void L3_reg_reset(void) { //称重数据初始化 R.weight.sensor_adc[0] = 0; R.weight.sensor_adc[1] = 0; R.weight.sensor_adc[2] = 0; R.weight.sensor_adc[3] = 0; R.weight.kgx10_out = 0; R.weight.adc16 = 0; //网络状态 00 联网 01 断网 R.net_status = NET_STATUS_NOTCONNECT; //电量百分比 R.dl = 0; //功耗模式:正常模式 R.power_mode = POWER_NORMAL; //单位 R.danwei = KG; //蜂鸣器 R.beep = beep_off; //蜂鸣器开启时间 R.beep_startime = 0; //离床报警开启标志 R.LeaveForbid_flag = LeaveForbid_OFF; // 手动解除报警标志 R.ForbidDelate_flag = 0; // 屏幕按键按下标志 R.ScrTouch_flag = 1; // 记录每次屏幕按下时间 R.ScrTouch_time = 0; //离床报警参考重量值 R.Weight_Ref = 0; } void L3_reg_init(void) { L3_reg_reset(); // L3_iap_2_reg(); } void L3_R_2_S(void) { TTSS_run_times(4)////tst_v.i { ////ts_adc_samples[tst_v.i].pSPara = &TS_adc_SPara[tst_v.i]; Lc_buf_from_const_uc(D_struct2U8(S.adc_SPara[tst_v.i]),D_struct2U8(TS_adc_SPara[tst_v.i]),D_TS_adc_SPara_LEN); } ///tst_weight.pSPara = &ts_weight_SPara; Lc_buf_from_const_uc(D_struct2U8(S.weight_SPara),D_struct2U8(ts_weight_SPara),D_TS_weight_SPara_len); } void L3_S_2_R(void) { TTSS_run_times(4)////tst_v.i { Lc_buf_from_const_uc(D_struct2U8(TS_adc_SPara[tst_v.i]),D_struct2U8(S.adc_SPara[tst_v.i]),D_TS_adc_SPara_LEN); ts_adc_samples[tst_v.i].pSPara = &TS_adc_SPara[tst_v.i]; } /// Lc_buf_from_const_uc(D_struct2U8(ts_weight_SPara),D_struct2U8(S.weight_SPara),D_TS_weight_SPara_len); tst_weight.pSPara = &ts_weight_SPara; } #define D_0xaa55 0xaa55 ////返回0 并打印 ("\r\nSpara ok "); /// 返回非零 为错误次数 最后一次ok /// 返回100 严重错误 一次没有成功 vtype L3_S_init(void) { vtype ovt = 0; //// /* 存错的多个写法: 使用三个区域,增加一致性判定的写法 使用一个区域,容错一次的写法 step 1 上电读取eeprom参数, step 2 如果标志位数据不对,把每个任务中的spara初始化放到S 中,然后写入eeprom,返回step 1 如果重试次数溢出 打印错误信息;严重警告 系统不可用 step 3 如果标志位数据ok 退出 TTSS_run_times(4)////tst_v.i { ////ts_adc_samples[tst_v.i].pSPara = &TS_adc_SPara[tst_v.i]; Lc_buf_from_const_uc(D_struct2U8(S.adc_SPara[tst_v.i]),D_struct2U8(&TS_adc_SPara[tst_v.i]),D_TS_adc_SPara_LEN); } ///tst_weight.pSPara = &ts_weight_SPara; Lc_buf_from_const_uc(D_struct2U8(S.weight_SPara),D_struct2U8(&ts_weight_SPara),D_TS_weight_SPara_len); */ do{ L0_Iap_Read_array(D_EEP_BASE,D_struct2U8(S),D_S_LEN); printf1("\r\nread S: %d ",(int)ovt); L1_uartD_Arrayhex(D_struct2U8(S),D_S_LEN); if(0xaa55 == S.d0xaa55) {////>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>和应用强相关 L3_S_2_R(); ////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<和应用强相关 printfs("\r\nSpara ok "); return ovt; }else { S.d0xaa55 = D_0xaa55; printf1("\r\nProg %x",S.d0xaa55); L3_R_2_S(); L0_Iap_Program_array(D_EEP_BASE,D_struct2U8(S),D_S_LEN); } }while(ovt ++< 2); return 100; } /* void L3_param_init(void) { int i; for(i=0;iadd,); } //读取iap内容,写入reg void L3_iap_2_reg(void) { /* U8 len = 0,i = 0; if(L1_eeprom_read((U8*)&iapData,&len) == 1) { L0_uart0_sendstr("e2p read failed\r\n"); return; } L0_uart0_sendstr("e2p read success\r\n"); Lc_buf_copy_uc((u8 *)&iapData,(u8 *)&R.sd,20); */ } /********* int L3_mcu_id_ok(void) { U8 i = 0,crc[2]; U32 enc_key; //1.获取MCU_ID L0_id_get_rom(G.e.mcu_id); for(i=0;i= weight) { break; } } if(i