forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-06-06 b39a40b0191e0a8b155db74e885ff66e17b91896
Function/POWER_MANAGE/power_manage.c
@@ -44,9 +44,10 @@
void Lith_Battery_GPIO_Clk_Init(void)
{
   CMU_PERCLK_SetableEx(PADCLK, ENABLE);  //PADʱÖÓ£¨GPIO£©Ê¹Äܺ¯Êý
   AnalogIO(LIT_ADC_PORT,LIT_ADC_PIN);//ADC_IN4
   AnalogIO(LIT_ADC_PORT,LIT_ADC_PIN);//
   GPIOx_ANEN_Setable(LIT_ADC_PORT,LIT_ADC_PIN,ENABLE);
   OutputIO(LITH_DETECTION_PORT,LITH_DETECTION_PIN,OUT_PUSHPULL);
//   AnalogIO(LIT_PWR_UNDER_PORT,LIT_PWR_UNDER_PIN);//ADC_5
//   AnalogIO(LIT_PWR_UNDER_PORT,LIT_PWR_UNDER_PIN);
   
}
@@ -54,6 +55,7 @@
{
   CMU_PERCLK_SetableEx(PADCLK, ENABLE);  //PADʱÖÓ£¨GPIO£©Ê¹Äܺ¯Êý
   AnalogIO_H(ALK_ADC_PIN);
//   GPIOx_ANEN_Setable(ALK_ADC_PORT,ALK_ADC_PIN,ENABLE);
   OutputIO(ALKA_DETECTION_PORT,ALKA_DETECTION_PIN,OUT_PUSHPULL);
}
@@ -67,7 +69,7 @@
void borrow_Pwr_GPIO_Clk_Init(void)
{
   CMU_PERCLK_SetableEx(PADCLK, ENABLE);  //PADʱÖÓ£¨GPIO£©Ê¹Äܺ¯Êý
   InputtIO( BORROW_PWR_PORT, BORROW_PWR_PIN, IN_NORMAL);
   OutputIO( BORROW_PWR_PORT, BORROW_PWR_PIN, OUT_PUSHPULL);
}
@@ -126,7 +128,7 @@
  float battery_vol = 0;
  ad_data_s *data_ins;
   Alka_Battery_GPIO_Clk_Init();
   ADC_IN8_Init();
   ADC_IN10_Init();
  ALK_DEC_ON;
  delay_ms(5);
  // ÉêÇëÈáÐÔÊý×éÄÚ´æ¿Õ¼ä
@@ -160,7 +162,7 @@
  float battery_vol = 0;
  ad_data_s *data_ins;
   Lith_Battery_GPIO_Clk_Init();
   ADC_IN4_Init();
   ADC_IN5_Init();
  LIT_DEC_ON;
  delay_ms(5);
  if ((data_ins = (ad_data_s *)malloc(sizeof(data_ins) + sizeof(uint16_t) * AD_LITH_BAT_CNT)) != NULL)
@@ -394,13 +396,18 @@
   }
   
   //¼îµçµôµçÈ·ÈÏ
   if(pwr_vol_p->alka_lose_check_flag == SET){
      pwr_vol_p->alka_lose_check_flag = RESET;
//   if(pwr_vol_p->alka_lose_check_flag == SET){      //ÔÝʱûÓÐÖжϴ¥·¢£¬×¢Ê͵ô
//      pwr_vol_p->alka_lose_check_flag = RESET;
      if(ALKA_PWR_LOSE_IO_READ == Bit_RESET){
         //È·ÈÏ﮵çµôµç
         __SYS_STATUS_ALARM_BYTES_SET(alka_remove,ALARM_ID_ALKA_BAT_REMOVAL);
         delay_ms(10);
         if(ALKA_PWR_LOSE_IO_READ == Bit_RESET){
            //È·ÈÏ﮵çµôµç
            __SYS_STATUS_ALARM_BYTES_SET(alka_remove,ALARM_ID_ALKA_BAT_REMOVAL);
         }
      }else{
         __SYS_STATUS_BYTES_STATUS(alka_remove, RESET, ALARM_ID_ALKA_BAT_REMOVAL);
      }
   }
//   }
   
   
   
@@ -411,7 +418,7 @@
   }
   
   if((pwr_vol_p->alka_flag != AMS_NONE)&&(delay_time_cnt >= DELAY_TIME) ){
      pwr_vol_p->alka_flag = AMS_PERIOD;
      pwr_vol_p->alka_flag = AMS_NONE;
      pwr_vol_p->alka_vcc = Get_Alka_Bat_Voltage();//¼îµç¼ì²â
      Alka_Bat_Voltage_Status(pwr_vol_p->alka_vcc,pwr_vol_p);
   } 
@@ -481,20 +488,50 @@
      if(pwr_vol_p->ex_pwr_in_cnt >=EX_PWR_CONTINUE_TIME){
         if(__SYS_STATUS_BYTES_GET(power_state) != SET){
            EX_PWR_ON;
            __SYS_STATUS_BYTES_STATUS(power_state, SET, ALARM_ID_NORMAL);
            __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();//ÍâµçʱʹÄÜÉÏλ»ú´®¿Ú
            uart_ctrl_para_g.UP_COMM_rxto_flag = RESET;
            lcd_first_wake_up_flag_g = SET;  //Íâµç½ÓÈëµãÁÁÆÁÄ»²¢±£³Ö³£ÁÁ
            
            //?Ìí¼ÓÍâµç±ä»¯±¨¾¯
            //½èµç¹Ø±Õ
            borrow_Pwr_GPIO_Clk_Init();
            BORROW_PWR_OFF;
            //?Ìí¼ÓÍâµç±ä»¯±¨¾¯£¬Íâµç±¨¾¯ÌØÊâ´¦Àí£¬½ÓÈëÖ»±¨¾¯£¬²»·§¿Ø£¬²»ÏÔʾ±¨¾¯Âë
            if(__SYS_ALARM_CTL_BYTES_GET(power_state)){
               if(__SYS_ALARM_REPORT_CTL_BYTES_GET(power_state) ==SET){
                  if(AlarmCntIncrease(ALARM_ID_EX_POWER_STATUS_CHANGE) ==SET){
                     system_alarm_word_g.alarm_word.power_state = SET;
                     AlarmTriggerWrcFlag = SET;
                  }
               }
            }
         }
      }
   }else
   {
      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);
      pwr_vol_p->ex_pwr_in_cnt = 0;
      //?Ìí¼ÓÍâµç±ä»¯±¨¾¯£¬Íâµç±¨¾¯ÌØÊâ´¦Àí£¬ÒÆ³ý±¨¾¯£¬²ÎÓë·§¿Ø£¬²»ÏÔʾ±¨¾¯Âë
      if(__SYS_STATUS_BYTES_GET(power_state) ==SET){
         __SYS_STATUS_BYTES_STATUS(power_state, RESET, ALARM_ID_NORMAL);//¸Ã״̬²»²ÎÓ뱨¾¯ÏÔʾ
         if(__SYS_ALARM_CTL_BYTES_GET(power_state)){
               system_alarm_word_for_valve_g.alarm_word.power_state = SET;  //ÍâµçÒÆ³ý±¨¾¯Òª´¥·¢·§¿Ø
               if(__SYS_ALARM_REPORT_CTL_BYTES_GET(power_state) ==SET){
                  if(AlarmCntIncrease(ALARM_ID_EX_POWER_STATUS_CHANGE) ==SET){
                     system_alarm_word_g.alarm_word.power_state = SET;
                     AlarmTriggerWrcFlag = SET;
                  }
               }
            }
      }
      //ÍâµçÒÆ³ýºó´®¿Ú½ûÖ¹£¬Ò²¿ÉÒÔÔÚÐÝÃßǰ½ûÖ¹
      
//      if((pwr_vol_p->ex_pwr_in_cnt!=0)&&(pwr_vol_p->ex_pwr_in_cnt!=EX_PWR_CONTINUE_TIME)){  
//         //³ÖÐøÖÐ;״̬¸Ä±ä£¬¿ÉÄÜ´ú±íÍâµç²»Îȶ¨£¬Æµ·±³öÏÖÔò±¨¾¯
@@ -507,7 +544,6 @@
//         if(__SYS_STATUS_BYTES_GET(power_state) != RESET){
//            EX_PWR_OFF;
//            __SYS_STATUS_BYTES_STATUS(power_state, RESET, ALARM_ID_NORMAL);
//            //?Ìí¼ÓÍâµç±ä»¯±¨¾¯
//         }
//      }
   }
@@ -550,6 +586,10 @@
      if(HWIDO_EX_PWR_IO_READ == Bit_RESET){
         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();//ÍâµçʱʹÄÜÉÏλ»ú´®¿Ú
      }else{
         EX_PWR_OFF;
      __SYS_STATUS_BYTES_STATUS(power_state, RESET, ALARM_ID_NORMAL);
@@ -560,4 +600,4 @@
   }
   
   
}
}