各位大侠:刚采用STM8L052C6 发现HALT 模式下电流达300多uA。
后精简硬件测试还是发现功耗电流下不来。电路上只对IC供给3.3v,外围电路只有NRST脚上的reset电路。
进入halt mode的软件如下:
CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_LSI);
while (CLK_GetSYSCLKSource() != CLK_SYSCLKSource_LSI)
{}
Flash_OFF_act_halt();
PWR_FastWakeUpCmd(DISABLE);
PWR_UltraLowPowerCmd(ENABLE);
CLK_HaltConfig(CLK_Halt_FastWakeup, DISABLE);
halt();
请各位大侠指点,感谢~
忘记说明了,测试程序中周边功能模块都没有启用。
进入halt mode 的GPIO设置如下:
GPIO_DeInit(GPIOA);
GPIO_DeInit(GPIOB);
GPIO_DeInit(GPIOC);
GPIO_DeInit(GPIOD);
GPIO_DeInit(GPIOE);
GPIO_Init(GPIOA, GPIO_Pin_All, GPIO_Mode_Out_OD_HiZ_Slow);
GPIO_Init(GPIOB, GPIO_Pin_All, GPIO_Mode_Out_OD_HiZ_Slow);
GPIO_Init(GPIOC, GPIO_Pin_All, GPIO_Mode_Out_OD_HiZ_Slow);
GPIO_Init(GPIOD, GPIO_Pin_All, GPIO_Mode_Out_OD_HiZ_Slow);
GPIO_Init(GPIOE, GPIO_Pin_All, GPIO_Mode_Out_OD_HiZ_Slow);
GPIO_Init(GPIOF, GPIO_Pin_All, GPIO_Mode_Out_OD_HiZ_Slow);
/* Select LSI as System clock source */
CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_LSI);
while (CLK_GetSYSCLKSource() != CLK_SYSCLKSource_LSI)
{}
Flash_OFF_act_halt();
PWR_FastWakeUpCmd(DISABLE);
PWR_UltraLowPowerCmd(ENABLE);
CLK_HaltConfig(CLK_Halt_FastWakeup, DISABLE);
halt();
你配置成 GPIO_Mode_In_PU_No_IT 试试
IO口的状态影响很大,未接外部电路的IO引脚可初始化为推挽输出并输出低电平,已使用(即有连接外部电路或芯片等)的IO引脚需根据实际电路决定输出高/低电平