#include "1powermanage.h" #include "devicegpioinit.h" #include "para.h" #include "1ValveControl.h" #include "1gprs.h" #include "systaskinit.h" void Power_Detection(u8 flag)//µçÔ´¼ì²â flag=1±íÃ÷ÊÇÔÚÑ­»·¼ì²âµç³ØµÄʱºò£¬Õâʱºò²»Óÿ¼Âǹط§£¬ÒòΪ֮ǰ¿Ï¶¨Ö´Ðйý¹Ø·§¡£ { float ADC_Battery_V=0; Alka_Falling_Disconfig(); delay_ms(20); BAT_ADC_IO_init(); delay_ms(1); ALKA_TEST_ON; LITH_TEST_ON;//¿ªÆôµç³Ø¼ì²âÒý½Å delay_ms(10); ADC_Battery_V = get_lith_bat_voltage(); if(ADC_Battery_V>4) { LLJ_data_g.Lith_Battery_V = ADC_Battery_V; }else { ADC_Battery_V = get_lith_bat_voltage(); if(ADC_Battery_V>3) { LLJ_data_g.Lith_Battery_V = ADC_Battery_V; }else { } } delay_ms(1); ALKA_TEST_OFF; LITH_TEST_OFF; IWDT_Clr(); if(LLJ_data_g.Lith_Battery_V LITH_V_LOW_ALARM +0.5) //﮵çµçÁ¿»Ø¸´ { system_alarm.alarm_LithPowerLow_LCDFLAG =0; } if(LLJ_data_g.Lith_Battery_VLITH_V_DOWN_VALVE_CLOSE+0.5) //ï®µç»Ø¸´ { system_alarm.alarm_LithPowerDOWN_LCDFLAG =0; Bat_Lith_status = 0; } delay_ms(10); LLJ_data_g.Alka_Battery_V = get_alka_bat_voltage(); if(LLJ_data_g.Alka_Battery_V < ALKA_V_LOW_ALARM) //¼îµçµÍµç { if(system_alarm.alarm_AlkaPowerLow_LCDFLAG==0) //¼îµçÊ״ε͵磬±¨¾¯ { system_alarm.alarm_AlkaPowerLOW = 1; } system_alarm.alarm_AlkaPowerLow_LCDFLAG = 1; } else if(LLJ_data_g.Alka_Battery_V > ALKA_V_LOW_ALARM+0.5)//¼îµç»Ø¸´ { system_alarm.alarm_AlkaPowerLow_LCDFLAG = 0; } if(LLJ_data_g.Alka_Battery_V < ALKA_V_DOWN_VALVE_CLOSE -0.1) //¼îµçÑÏÖØÇ·Ñ¹£¬£¬½øÈëÐÝÃßÑ­»·¼ì²â£¬¹Ø·§ { Bat_Alka_status = 1; if(gprs_protocol_header.Valve_Status != 2) { if(flag==0) { if(HWID0_READ==1) { //Valve_close(); } } } } else if(LLJ_data_g.Alka_Battery_V < ALKA_V_DOWN_VALVE_CLOSE ) //¼îµçǷѹ£¬¹Ø·§ { if(system_alarm.alarm_AlkaPowerDOWN_LCDFLAG==0) //¼îµçÊ×´ÎǷѹ£¬±¨¾¯ { system_alarm.alarm_AlkaPowerDOWN = 1; } system_alarm.alarm_AlkaPowerDOWN_LCDFLAG =1; if(gprs_protocol_header.Valve_Status != 2) { if(flag==0) { if(HWID0_READ==1) { //Valve_close(); } } } } else if(LLJ_data_g.Alka_Battery_V > ALKA_V_DOWN_VALVE_CLOSE+0.3) //¼îµç»Ø¸´ { system_alarm.alarm_AlkaPowerDOWN_LCDFLAG =0; Bat_Alka_status = 0; } Alka_INT_init(); Alka_Falling_config(); if(HWID0_READ==0) //ÓÐÍâµç { gprs_protocol_header.Power_type = 2; } else { gprs_protocol_header.Power_type = 1; } } void EXPower_Control(u8 CtrCode) { CtrCode = CtrCode & 0x0f; if((Bat_Alka_status==0)||(HWID0_READ==0)) //¼îµçÓеã»òÕßÓÐÍ⹩µçµÄʱºò¿ªÆô¶ÔÍâÒÇ±í¹©µç { if(CtrCode==0) { } else if(CtrCode==1) { power9V_ON; } else if(CtrCode==2) { power12V_ON; } else { } } } void pwr_enter_sleep_mode(uint32_t sleepmode) { PMU_SleepCfg_InitTypeDef SleepCfg_InitStruct; CDIF_CR_INTF_EN_Setable(ENABLE); /*ϵ縴λÅäÖÃ*/ //pdrºÍborÁ½¸öϵ縴λÖÁÉÙÒª´ò¿ªÒ»¸ö //µ±µçÔ´µçѹµÍÓÚϵ縴λʱ£¬Ð¾Æ¬»á±»¸´Î»×¡ //pdrµçѹµµÎ»²»×¼µ«Êǹ¦ºÄ¼«µÍ(¼¸ºõÎÞ²âÁ¿£© //borµçѹµµÎ»×¼È·µ«ÊÇÐèÒªÔö¼Ó2uA¹¦ºÄ RMU_PDRCR_PDREN_Setable(ENABLE); //´ò¿ªPDR RMU_PDRCR_PDRCFG_Set(RMU_PDRCR_PDRCFG_1P5V);//pdrµçѹµ÷Õûµ½1.4V RMU_BORCR_OFF_BOR_Setable(ENABLE); //¹Ø±ÕBOR VRTC_RCMFCR_EN_Setable(DISABLE);//RCMF¹Ø±Õ //VRTC_RCLPCR_RCLP_OFF_Setable(ENABLE);//RCLP¹Ø±Õ CDIF_CR_INTF_EN_Setable(DISABLE); SleepCfg_InitStruct.PMOD = PMU_CR_PMOD_SLEEP; //¹¦ºÄģʽÅäÖà SleepCfg_InitStruct.SLPDP = sleepmode; //sleep SleepCfg_InitStruct.CVS = DISABLE; //Äں˵çѹ½µµÍ¿ØÖÆ SleepCfg_InitStruct.SCR = 0; //M0ϵͳ¿ØÖƼĴæÆ÷£¬Ò»°ãÅäÖÃΪ0¼´¿É SleepCfg_InitStruct.TIA = PMU_WKTR_T1A_8US;//¿É±à³Ì¶îÍ⻽ÐÑÑÓ³Ù8us PMU_SleepCfg_Init(&SleepCfg_InitStruct);//ÐÝÃßÅäÖà // pwr_gpio_mode_ain(); IWDT_Clr(); __WFI();//½øÈëÐÝÃß IWDT_Clr(); RMU_BORCR_OFF_BOR_Setable(DISABLE); //¹Ø±ÕBOR }