stm0newer 发表于 2017-8-17 19:32:09

stm8l低功耗模式为什么电流大约1.35mA

void halt_gpio_init(void)
{
disableInterrupts();
CLK_DeInit();
CLK_SYSCLKSourceSwitchCmd (ENABLE);                                                         //使能切换
CLK_LSICmd (ENABLE);                                                                                             //使能LSI
while(CLK_GetFlagStatus(CLK_FLAG_LSIRDY)==RESET);
    CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_LSI);                                       //LSI为系统时钟
CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);
    while (CLK_GetSYSCLKSource() != CLK_SYSCLKSource_LSI)//等待时钟稳定
CLK_HSICmd(DISABLE);
TIM1_DeInit();
TIM1_Cmd(DISABLE);
TIM2_DeInit();
TIM2_Cmd(DISABLE);
TIM3_DeInit();
TIM3_Cmd(DISABLE);
TIM4_DeInit();
TIM4_Cmd(DISABLE);
TIM5_DeInit();
TIM5_Cmd(DISABLE);
I2C_DeInit(I2C1);
I2C_Cmd(I2C1,DISABLE);
USART_DeInit(USART1);
USART_Cmd(USART1,DISABLE);
USART_DeInit(USART2);
USART_Cmd(USART1,DISABLE);
USART_DeInit(USART3);
USART_Cmd(USART1,DISABLE);
//RTC_DeInit();
ADC_DeInit(ADC1);
ADC_Cmd(ADC1,DISABLE);
ADC_TempSensorCmd(DISABLE);
ADC_VrefintCmd(DISABLE);
ADC_ChannelCmd(ADC1,ADC_Channel_18,DISABLE);
CLK_PeripheralClockConfig(CLK_Peripheral_TIM1,DISABLE);
CLK_PeripheralClockConfig(CLK_Peripheral_TIM2,DISABLE);
CLK_PeripheralClockConfig(CLK_Peripheral_TIM3,DISABLE);
CLK_PeripheralClockConfig(CLK_Peripheral_TIM4,DISABLE);
CLK_PeripheralClockConfig(CLK_Peripheral_TIM5,DISABLE);
CLK_PeripheralClockConfig(CLK_Peripheral_I2C1,DISABLE);
CLK_PeripheralClockConfig(CLK_Peripheral_SPI1,DISABLE);
CLK_PeripheralClockConfig(CLK_Peripheral_USART1,DISABLE);
CLK_PeripheralClockConfig(CLK_Peripheral_USART2,DISABLE);
CLK_PeripheralClockConfig(CLK_Peripheral_USART3,DISABLE);
CLK_PeripheralClockConfig(CLK_Peripheral_ADC1,DISABLE);
//CLK_PeripheralClockConfig(CLK_Peripheral_RTC,DISABLE);
CLK_PeripheralClockConfig(CLK_Peripheral_BEEP,DISABLE);
CLK_PeripheralClockConfig(CLK_Peripheral_LCD,DISABLE);
GPIO_DeInit(GPIOA);
GPIO_DeInit(GPIOB);
GPIO_DeInit(GPIOC);
GPIO_DeInit(GPIOD);
    GPIO_Init(GPIOA, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);
    GPIO_Init(GPIOB, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);
    GPIO_Init(GPIOC, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);
    GPIO_Init(GPIOD, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);
//GPIO_Init(GPIOA,GPIO_Pin_0|GPIO_Pin_1,GPIO_Mode_Out_PP_Low_Slow);

GPIO_Init(GPIOB, GPIO_Pin_1,GPIO_Mode_Out_PP_High_Slow);                               //wakeup 7137
GPIO_Init(GPIOB, GPIO_Pin_3,GPIO_Mode_Out_PP_High_Slow);                              //note 7137 recv information
GPIO_Init(GPIOB, GPIO_Pin_6,GPIO_Mode_Out_PP_High_Slow);                              //note 7137 recv information
GPIO_Init(GPIOD, GPIO_Pin_0,GPIO_Mode_Out_PP_High_Slow);                              //LED
GPIO_Init(GPIOA, GPIO_Pin_2,GPIO_Mode_In_PU_IT);                                                 //ring
GPIO_Init(GPIOA, GPIO_Pin_3,GPIO_Mode_In_PU_IT);                                                 //preview
GPIO_Init(GPIOB, GPIO_Pin_7,GPIO_Mode_In_PU_IT);                                                 //OK
GPIO_Init(GPIOC, GPIO_Pin_0, GPIO_Mode_Out_PP_High_Slow);                               //sda
GPIO_Init(GPIOC, GPIO_Pin_1, GPIO_Mode_Out_PP_High_Slow);                              //scl

GPIO_Init(GPIOB, GPIO_Pin_4,GPIO_Mode_In_PU_IT);                                             //2.4G


EXTI_DeInit();
if(get_monitor()==ON)
{
//    log("open IR\n");
    GPIO_Init(GPIOB, GPIO_Pin_5,GPIO_Mode_In_PU_IT);                                                   //IR
    EXTI_SetPinSensitivity(EXTI_Pin_5,EXTI_Trigger_Falling);
}
if(get_sensitivity_setting()==HIGH)
    GPIO_Init(GPIOB, GPIO_Pin_2,GPIO_Mode_Out_PP_High_Slow);                               //灵敏度高
else
       GPIO_Init(GPIOB, GPIO_Pin_2,GPIO_Mode_Out_PP_Low_Slow);                            //灵敏度低
EXTI_SetPinSensitivity(EXTI_Pin_2,EXTI_Trigger_Falling);                                              //中断配置
EXTI_SetPinSensitivity(EXTI_Pin_3,EXTI_Trigger_Falling);
EXTI_SetPinSensitivity(EXTI_Pin_6,EXTI_Trigger_Falling);
EXTI_SetPinSensitivity(EXTI_Pin_7,EXTI_Trigger_Falling);
EXTI_SetPinSensitivity(EXTI_Pin_4,EXTI_Trigger_Rising);
EXTI_ClearITPendingBit(EXTI_IT_PortB);
EXTI_ClearITPendingBit(EXTI_IT_PortD);
enableInterrupts();   
Flash_OFF_act_halt();


}

    default:
      if(flag==0)
      {
      bjy_disable_i2c();
//      halt_init();
      PWR_DeInit();
      PWR_PVDCmd(DISABLE);
      CLK_HaltConfig(CLK_Halt_FastWakeup, ENABLE);
      halt_gpio_init();
      PWR_FastWakeUpCmd(ENABLE);
      PWR_UltraLowPowerCmd(ENABLE);                   //超低功耗
      halt();
      bjy_clk_init();
      bjy_usart_init();
      bjy_adc_init();
      bjy_adc_conv();
      log("halt over\n");
      bjy_rtc_init();

      }
      break;

stm0newer 发表于 2017-8-17 19:32:26

求助啊 困扰我 好几天了

stm0newer 发表于 2017-8-17 19:32:50

能关的我都关了

sssdd 发表于 2017-8-18 14:50:30

先排查硬件,把通讯的外设模块电源拆了,或者一个个拔了。
然后,看单片机自己睡着了没。
然后慢慢缩小范围。
页: [1]
查看完整版本: stm8l低功耗模式为什么电流大约1.35mA