forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-05-28 6b0d1f644233b2984d2a87553de598879cf05caf
Function/POWER_MANAGE/power_manage.c
@@ -18,7 +18,7 @@
uint8_t first_power_get_cnt_g = 0;
LIMIT_TRIGGER_RECORD_PARA_T limit_trigger_record_para_g;
void Power_IO_Init(void)
{
@@ -37,6 +37,8 @@
   OutputIO(EX_PWR_EN_PORT,EX_PWR_EN_PIN,OUT_PUSHPULL);
   BORROW_PWR_OFF;
   EX_PWR_OFF;
   InputtIO( LIMIT_TRIGGER_PORT, LIMIT_TRIGGER_PIN, IN_NORMAL);
}
void Lith_Battery_GPIO_Clk_Init(void)
@@ -59,7 +61,15 @@
{
   CMU_PERCLK_SetableEx(PADCLK, ENABLE);  //PADʱÖÓ£¨GPIO£©Ê¹Äܺ¯Êý
   InputtIO( HWIDO_EX_PWR_PORT, HWIDO_EX_PWR_PIN, IN_NORMAL);
   OutputIO(EX_PWR_EN_PORT,EX_PWR_EN_PIN,OUT_PUSHPULL);
}
void borrow_Pwr_GPIO_Clk_Init(void)
{
   CMU_PERCLK_SetableEx(PADCLK, ENABLE);  //PADʱÖÓ£¨GPIO£©Ê¹Äܺ¯Êý
   InputtIO( BORROW_PWR_PORT, BORROW_PWR_PIN, IN_NORMAL);
}
/******************************************
 * func:    Get_vol_Average
@@ -426,29 +436,39 @@
   }
   
   if(pwr_vol_p->lith_vcc_status == BAT_V_DOWN){
      __SYS_STATUS_BYTES_STATUS(lith_down, SET, ALARM_ID_LITH_BAT_DOWN);
      __SYS_STATUS_BYTES_STATUS(lith_low, SET, ALARM_ID_LITH_BAT_LOW);
      __SYS_STATUS_ALARM_BYTES_SET(lith_down, ALARM_ID_LITH_BAT_DOWN);
      __SYS_STATUS_ALARM_BYTES_SET(lith_low, ALARM_ID_LITH_BAT_LOW);
      pwr_vol_p->lith_synthesize_per = 0;
   }else if(pwr_vol_p->lith_vcc_status == BAT_V_LOW){
      __SYS_STATUS_BYTES_STATUS(lith_down, RESET, ALARM_ID_LITH_BAT_DOWN);
      __SYS_STATUS_BYTES_STATUS(lith_low, SET, ALARM_ID_LITH_BAT_LOW);
      __SYS_STATUS_ALARM_BYTES_SET(lith_low, ALARM_ID_LITH_BAT_LOW);
      pwr_vol_p->lith_synthesize_per = pwr_vol_p->alka_vcc_per;
   }else{
      pwr_vol_p->lith_synthesize_per = (pwr_vol_p->lith_remain_use_time_per ==100)? 100:pwr_vol_p->lith_remain_use_time_per + 1;  //ΪÁË100%Äܹ»Î¬³ÖÒ»¶Îʱ¼ä£¬µçѹÕý³£×´Ì¬Ê±°Ù·Ö±È²»ÄÜΪ0£¬Îª0¾ÍÒªÏÔʾ¿ÕÁË£¬±£³Ö1¸ñÖÁµçѹ״̬±äΪǷѹ
      
      if(pwr_vol_p->lith_synthesize_per < 20){
         __SYS_STATUS_BYTES_STATUS(lith_down, RESET, ALARM_ID_LITH_BAT_DOWN);
         __SYS_STATUS_BYTES_STATUS(lith_low, SET, ALARM_ID_LITH_BAT_LOW);
         __SYS_STATUS_ALARM_BYTES_SET(lith_low, ALARM_ID_LITH_BAT_LOW);
      }else{
         __SYS_STATUS_BYTES_STATUS(lith_down, RESET, ALARM_ID_LITH_BAT_DOWN);
         __SYS_STATUS_BYTES_STATUS(lith_low, RESET, ALARM_ID_LITH_BAT_LOW);
      }
      
   }
   /*¼îµç³Ø¿ÉÄܸù¾ÝʹÓôÎÊý£¬¶ø²»ÊÇʱ¼ä£¬×îÖÕ״̬ÅжϷ½Ê½´ý¶¨£¿*/
   /*¼îµç³Ø¿ÉÄܸù¾ÝʹÓôÎÊý£¬¶ø²»ÊÇʱ¼ä£¬×îÖÕ״̬ÅжϷ½Ê½´ý¶¨£¿ÔÝʱ»¹Ö»ÊǸù¾Ýµçѹֵ*/
   if(pwr_vol_p->alka_vcc_status == BAT_V_DOWN){
      __SYS_STATUS_ALARM_BYTES_SET(alka_down, ALARM_ID_ALKA_BAT_DOWN);
      __SYS_STATUS_ALARM_BYTES_SET(alka_low, ALARM_ID_ALKA_BAT_LOW);
   }else if(pwr_vol_p->alka_vcc_status == BAT_V_LOW){
      __SYS_STATUS_BYTES_STATUS(alka_down, RESET, ALARM_ID_ALKA_BAT_DOWN);
      __SYS_STATUS_ALARM_BYTES_SET(alka_low, ALARM_ID_ALKA_BAT_LOW);
   }else{
      __SYS_STATUS_BYTES_STATUS(alka_down, RESET, ALARM_ID_ALKA_BAT_DOWN);
      __SYS_STATUS_BYTES_STATUS(alka_low, RESET, ALARM_ID_ALKA_BAT_LOW);
   }
   
   
   /****Íâµçʵʱ¼à²â******/
   /****Íâµçʵʱ¼à²â,Íâµç½ÓÈëÑÓ³Ù£¬ÍâµçÒÆ³ýҪ˲¼äÇл»»Øµç³Ø¹©µç******/
   EX_Pwr_GPIO_Clk_Init();
   if(HWIDO_EX_PWR_IO_READ == Bit_RESET){
      if((pwr_vol_p->ex_pwr_out_cnt!=0)&&(pwr_vol_p->ex_pwr_out_cnt!=EX_PWR_CONTINUE_TIME)){  
@@ -462,6 +482,8 @@
         if(__SYS_STATUS_BYTES_GET(power_state) != SET){
            EX_PWR_ON;
            __SYS_STATUS_BYTES_STATUS(power_state, SET, ALARM_ID_NORMAL);
            //Íâµç½ÓÈëÖ®ºó´ò¿ªÍâµçÒÆ³ýÖжϣ¬ÍâµçÒÆ³ýÒªÁ¢¼´Çл»µç³Ø¹©µç
            GPIO_EXTI_Init( HWIDO_EX_PWR_PORT, HWIDO_EX_PWR_PIN, EXTI_RISING, ENABLE);
            
            up_comm_uart_enable();//ÍâµçʱʹÄÜÉÏλ»ú´®¿Ú
            
@@ -470,20 +492,24 @@
      }
   }else
   {
      if((pwr_vol_p->ex_pwr_in_cnt!=0)&&(pwr_vol_p->ex_pwr_in_cnt!=EX_PWR_CONTINUE_TIME)){
               //³ÖÐøÖÐ;״̬¸Ä±ä£¬¿ÉÄÜ´ú±íÍâµç²»Îȶ¨£¬Æµ·±³öÏÖÔò±¨¾¯
      }
      pwr_vol_p->ex_pwr_in_cnt = 0;
      if(pwr_vol_p->ex_pwr_out_cnt < EX_PWR_CONTINUE_TIME )
         pwr_vol_p->ex_pwr_out_cnt++;
      if(pwr_vol_p->ex_pwr_out_cnt >=EX_PWR_CONTINUE_TIME){
         if(__SYS_STATUS_BYTES_GET(power_state) != RESET){
      GPIO_EXTI_Init( HWIDO_EX_PWR_PORT, HWIDO_EX_PWR_PIN, EXTI_RISING, DISABLE);
            EX_PWR_OFF;
            __SYS_STATUS_BYTES_STATUS(power_state, RESET, ALARM_ID_NORMAL);
            //?Ìí¼ÓÍâµç±ä»¯±¨¾¯
         }
      }
//      if((pwr_vol_p->ex_pwr_in_cnt!=0)&&(pwr_vol_p->ex_pwr_in_cnt!=EX_PWR_CONTINUE_TIME)){
//         //³ÖÐøÖÐ;״̬¸Ä±ä£¬¿ÉÄÜ´ú±íÍâµç²»Îȶ¨£¬Æµ·±³öÏÖÔò±¨¾¯
//      }
//      pwr_vol_p->ex_pwr_in_cnt = 0;
//      if(pwr_vol_p->ex_pwr_out_cnt < EX_PWR_CONTINUE_TIME )
//         pwr_vol_p->ex_pwr_out_cnt++;
//
//      if(pwr_vol_p->ex_pwr_out_cnt >=EX_PWR_CONTINUE_TIME){
//         if(__SYS_STATUS_BYTES_GET(power_state) != RESET){
//            EX_PWR_OFF;
//            __SYS_STATUS_BYTES_STATUS(power_state, RESET, ALARM_ID_NORMAL);
//            //?Ìí¼ÓÍâµç±ä»¯±¨¾¯
//         }
//      }
   }