大家好! 最近有个项目用 STM32F407VGT6 (100pin , 内1MBFLASH) 低功耗的电流偏大 , 程序请看图
测试说明如下:
1. STM32F407VGT6 只接了8M的高频晶振和32K低频晶振 , 其它IO全部空接, 设置为输入上拉
测试结果:
STOP模式 , 电流300uA
PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI); //300uA
待机模式 , 12uA
PWR_EnterSTANDBYMode(); //12uA
我需要STOP模式降低电流, 还需要设置或关闭 什么?
程序代码:
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
delay_init(168); //初始化延时函数
My_RTC_Init(); //初始化RTC
//RTC_Set_WakeUp(RTC_WakeUpClock_CK_SPRE_16bits,0); //配置WAKE UP中断,1秒钟中断一次
//RTC_Set_WakeUp(RTC_WakeUpClock_RTCCLK_Div2,8192); //配置WAKE UP中断,0.5秒钟中断一次
RTC_GetTime(0,&RTC_Time);
RTC_GetDate(0,&RTC_Date);
RtcMinter = RTC_Time.RTC_Minutes;
RTC_Set_WakeUp_Close(); //关闭唤醒RTC
delay_ms(2000);
while(1)
{
LED_Init(); //初始化
IoClock_DISABLE(); //关闭所以IO时钟, 影响不大
//使能电源管理单元的时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); //休眼
PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI); //300uA
//PWR_EnterSTANDBYMode(); //12uA
__asm("nop");
__asm("nop");
__asm("nop");
Set_HighClock();
delay_us(100);
}
}
|