Embedded 待机模式下的Stm32功耗过高

Embedded 待机模式下的Stm32功耗过高,embedded,stm32,sleep,standby,Embedded,Stm32,Sleep,Standby,我正在STM32F4O7VGT6上试验待机模式。我知道如何将MCU置于待机模式(或者我想我知道)。我用这个init函数来实现这一点: void MX_RTC_Init(void) { RTC_TimeTypeDef sTime = {0}; RTC_DateTypeDef sDate = {0}; /** Initialize RTC Only */ hrtc.Instance = RTC; hrtc.Init.HourFormat = RT

我正在STM32F4O7VGT6上试验待机模式。我知道如何将MCU置于待机模式(或者我想我知道)。我用这个init函数来实现这一点:

 void MX_RTC_Init(void) { 

    RTC_TimeTypeDef sTime = {0};  
    RTC_DateTypeDef sDate = {0};

    /** Initialize RTC Only  */   hrtc.Instance = RTC;  
    hrtc.Init.HourFormat = RTC_HOURFORMAT_24;  
    hrtc.Init.AsynchPrediv =127; 
    hrtc.Init.SynchPrediv = 255; 
    hrtc.Init.OutPut = RTC_OUTPUT_WAKEUP; 
    hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH; 
    hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN; 
    if (HAL_RTC_Init(&hrtc) != HAL_OK)   {
       Error_Handler();
    }

    /** Initialize RTC and set the Time and Date */
    sTime.Hours = 0x13;
    sTime.Minutes = 0x20;
    sTime.Seconds = 0x0;
    sTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;
    sTime.StoreOperation = RTC_STOREOPERATION_RESET;
    if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BCD) != HAL_OK)
    {
       Error_Handler();
    }
    sDate.WeekDay = RTC_WEEKDAY_THURSDAY;
    sDate.Month = RTC_MONTH_JANUARY;
    sDate.Date = 0x30;
    sDate.Year = 0x20;

    if (HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BCD) != HAL_OK)
    {
       Error_Handler();
    }
    HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1);
}
此初始化功能允许使用唤醒引脚(PA0)和定时器(当前周期约为20秒)将MCU从待机模式唤醒。当我想将MCU置于待机模式时,调用下一个函数:

void Enter_StandbyMode(void)
{   
    __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(&hrtc, RTC_FLAG_WUTF);

    HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN1);
    __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
    HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1);

    HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, 40960, RTC_WAKEUPCLOCK_RTCCLK_DIV16);

    HAL_PWR_EnterSTANDBYMode();
}
这也是我所期望的(我使用二极管来指示MCU何时被定时器从待机模式唤醒),但我的问题是下一个:


为什么当MCU处于待机模式时,引脚上仍有电压?当我用万用表测量电流时,我得到了10-20mA的功耗

我认为这个问题应该转移到。已经交叉发布了我听了你的建议你的处理器处于待机状态,但你的板上还有什么吸引电流?例如,如果有一个或两个LED亮起,20mA就差不多了。当它不处于待机状态时,它会画什么?管脚上的电压并不表示待机-这取决于您所指的管脚的时间以及它们连接到什么。显然,从您的同一个问题开始,该板上还有其他消耗电源的组件-USB网桥和GNSS模块,它们将对您的电源预算做出重大贡献-这不是软件问题。