#include "FreeRTOS.h" #include "task.h" #include "stm32f4xx_hal.h" #include "user_power_mgmt.h" void vApplicationSleep(uint32_t xExpectedIdleTime) { // Enter a critical section __disable_irq(); eSleepModeStatus eSleepStatus = eTaskConfirmSleepModeStatus(); if(eSleepStatus == eAbortSleep) { // Do nothing, just return. } else { uint32_t actual_ms = user_pm_idle_timeout(xExpectedIdleTime / portTICK_RATE_MS); vTaskStepTick(actual_ms); } // Exit critical section __enable_irq(); }