HALT唤醒后,VCAP 不是1.8V,

2019-07-19 20:59发布

[mw_shl_code=c,true]#define  End_Up_On()   GPIO_WriteHigh(GPIOA, GPIO_PIN_3);  
#define  End_Up_Off()   GPIO_WriteLow(GPIOA, GPIO_PIN_3);       

//时钟初始化
void Clk_Init(void)
{
  CLK_DeInit();                                                                //CLK Default reset
  //CLK_LSICmd(ENABLE);                                                        //Enable CLK  LSI
  CLK_HSICmd(ENABLE);
  //CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1);                              //内部时钟为1分频 = 16Mhz
  CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV4);
  CLK_ClockSecuritySystemEnable();
  //CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV8);                                //配置系统时钟分频器
}

//Io口初始化
void IO_Init(void)
{
  GPIO_DeInit(GPIOD);                                                        //恢复指定端口寄存器到默认值
GPIO_Init(GPIOA, GPIO_PIN_3, GPIO_MODE_OUT_PP_LOW_FAST);             //END_UP 设置
// GPIO_WriteLow(GPIOA, GPIO_PIN_3);                                        //END_Up初始为低
  GPIO_DeInit(GPIOC);                                                   //把LED1-4设置为高电平输出,关灯
  GPIO_Init(GPIOC, GPIO_PIN_HNIB , GPIO_MODE_OUT_PP_HIGH_SLOW);         //LED1-4 灭
}

//ADC初始化
void ADC_Init(void)
{
  ADC1_DeInit();                                                                                       
  ADC1_Init(ADC1_CONVERSIONMODE_SINGLE,ADC1_CHANNEL_4,ADC1_PRESSEL_FCPU_D2,ADC1_EXTTRIG_TIM, DISABLE,
            ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_CHANNEL4, DISABLE);
  ADC1_Init(ADC1_CONVERSIONMODE_SINGLE,ADC1_CHANNEL_3,ADC1_PRESSEL_FCPU_D2,ADC1_EXTTRIG_TIM, DISABLE,
            ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_CHANNEL3, DISABLE);
  ADC1_Cmd(ENABLE);
  ADC1_ITConfig(ADC1_IT_AWDIE, DISABLE);
}
void System_Init(void)
{
        IO_Init();
        Clk_Init();
       
        ADC_Init();
        KeyInit();                                          //按键初始化
          USB_Init();
          TIM2_Init();
        
        enableInterrupts();
}
/**************************实现函数********************************************
*函数原型:                main() 主程序
*功  能:                设置LED的端口为输出,并使开发板上的LED2闪烁
*******************************************************************************/
main()
{
  disableInterrupts();
  //MWWDG_Init();  
  Clk_Init();                                         //时钟初始化
  IO_Init();                                          //IO初始化
  
  ADC_Init();                                          //ADC 初始化
  KeyInit();                                          //按键初始化
  
  USB_Init();
  TIM2_Init();
  //USART_Configuration();                         //串口中断配置
                                             //USB 初始化
  enableInterrupts();
  
  
  
  
  
  
  while (1)
   { //主循环体

  if(fPowerOn_flag==FALSE)                //无活动信号进入停机模式
        {
               
          //Halt_OffDevice();              //关闭设备
                halt();                         //停机
                System_Init();  
              //  End_Up_On();
          }

   if(fPowerOn_flag)                           //正常工作状态
           {
      
         if(fKeyPress)                                //按键事件
           {
  

                        //调试使用
                  // itoa(adc_val,Tx_Buffer);
                  //UART_Send( Tx_Buffer, countof(Tx_Buffer)-1);

                  //delay_ms(2);
                End_Up_On();                                             //升压  
                adc_val =  ADC_val_get(FLG_VOUT);                       //电压通道
Led_tig(adc_val);                                        //检测电池电压[/mw_shl_code]

程序如上,

程序流程:
上电无动作-> 进入HALT->按键中断激活 -> 进入正常流程.

可是一次按键激活后,出现如下现象:
1.VCAP=2.2V(HALT下也是2.2V).
2.程序能进中断,能进入正常流程,但到End_Up_ON()就不走了.
请各位大神出手援助啊!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。