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;
求助啊 困扰我 好几天了 能关的我都关了
先排查硬件,把通讯的外设模块电源拆了,或者一个个拔了。
然后,看单片机自己睡着了没。
然后慢慢缩小范围。
页:
[1]