stm32低功耗求助

2019-07-14 22:33发布

STM32f101c8t6做低功耗,现在外设已全部拆除,用稳压源3.3V直接供电,功耗一直无法降下来,求高手指导!
附代码:(是按程序执行顺序贴出的,本身全是子函数,现在全部贴在这)
int main()
{
RCC_DeInit();
   
RCC_HSICmd(ENABLE);
while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET)
{
}
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
FLASH_SetLatency(FLASH_Latency_2);
RCC_HCLKConfig(RCC_SYSCLK_Div1);   //1
RCC_PCLK1Config(RCC_HCLK_Div2);    //2
RCC_PCLK2Config(RCC_HCLK_Div1);    //1
RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_2);         
     
RCC_PLLCmd(ENABLE);
   
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
{
}
   
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);  
   
while(RCC_GetSYSCLKSource() != 0x08)
{
}
while(1)
{
  Delay(30000);   //延时
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC |
           RCC_APB2Periph_GPIOD | RCC_APB2Periph_AFIO ,ENABLE);


  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All  ;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;

  GPIO_Init(GPIOA, &GPIO_InitStructure);
  GPIO_Init(GPIOB, &GPIO_InitStructure);

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14 | GPIO_Pin_15  ;  
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOC, &GPIO_InitStructure);
  GPIO_ResetBits(GPIOC,GPIO_Pin_14 | GPIO_Pin_15);

  GPIO_PinRemapConfig(GPIO_Remap_PD01,ENABLE);

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;  
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOD, &GPIO_InitStructure);

  GPIO_ResetBits(GPIOD,GPIO_Pin_0 | GPIO_Pin_1);

  
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
  GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable , ENABLE);
      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4;
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;//XIAO
      GPIO_Init(GPIOB, &GPIO_InitStructure);//XIAO
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_9;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
  GPIO_Init(GPIOB, &GPIO_InitStructure);

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD
           | RCC_APB2Periph_AFIO ,DISABLE); // ¹Ø±ÕÒý½ÅʱÖÓ¼°¸´ÓÃʱÖÓ
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_SPI1 | RCC_APB2Periph_USART1,DISABLE);      
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_tiM2 | RCC_APB1Periph_TIM3 | RCC_APB1Periph_TIM4 | RCC_APB1Periph_WWDG | RCC_APB1Periph_SPI2
           | RCC_APB1Periph_USART2 | RCC_APB1Periph_USART3 | RCC_APB1Periph_I2C1 | RCC_APB1Periph_I2C2 |RCC_APB1Periph_BKP,DISABLE);
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_SRAM | RCC_AHBPeriph_FLITF,DISABLE);

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
  

  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_11;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;      
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
   
  GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);
  GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource11);
  
  
  EXTI_InitStructure.EXTI_Line = EXTI_Line0;
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);
  NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);  

  EXTI_InitStructure.EXTI_Line = EXTI_Line11;
  EXTI_Init(&EXTI_InitStructure);
  NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
  NVIC_Init(&NVIC_InitStructure);
  
  NVIC_SystemLPConfig(NVIC_LP_SLEEPDEEP,ENABLE);
  FLASH_HalfCycleAccessCmd(DISABLE);
  FLASH_PrefetchBufferCmd(DISABLE);

  
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);

    PWR_PVDCmd(DISABLE);
  
    PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);
}
}
0条回答

一周热门 更多>