first
This commit is contained in:
165
Core/Src/stm32_lpm_if.c
Normal file
165
Core/Src/stm32_lpm_if.c
Normal file
@ -0,0 +1,165 @@
|
||||
/* USER CODE BEGIN Header */
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file stm32_lpm_if.c
|
||||
* @author MCD Application Team
|
||||
* @brief Low layer function to enter/exit low power modes (stop, sleep)
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Copyright (c) 2022 STMicroelectronics.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This software is licensed under terms that can be found in the LICENSE file
|
||||
* in the root directory of this software component.
|
||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
/* USER CODE END Header */
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include "platform.h"
|
||||
#include "stm32_lpm.h"
|
||||
#include "stm32_lpm_if.h"
|
||||
#include "usart_if.h"
|
||||
|
||||
/* USER CODE BEGIN Includes */
|
||||
|
||||
/* USER CODE END Includes */
|
||||
|
||||
/* External variables ---------------------------------------------------------*/
|
||||
/* USER CODE BEGIN EV */
|
||||
|
||||
/* USER CODE END EV */
|
||||
|
||||
/* Private typedef -----------------------------------------------------------*/
|
||||
/**
|
||||
* @brief Power driver callbacks handler
|
||||
*/
|
||||
const struct UTIL_LPM_Driver_s UTIL_PowerDriver =
|
||||
{
|
||||
PWR_EnterSleepMode,
|
||||
PWR_ExitSleepMode,
|
||||
|
||||
PWR_EnterStopMode,
|
||||
PWR_ExitStopMode,
|
||||
|
||||
PWR_EnterOffMode,
|
||||
PWR_ExitOffMode,
|
||||
};
|
||||
|
||||
/* USER CODE BEGIN PTD */
|
||||
|
||||
/* USER CODE END PTD */
|
||||
|
||||
/* Private define ------------------------------------------------------------*/
|
||||
/* USER CODE BEGIN PD */
|
||||
|
||||
/* USER CODE END PD */
|
||||
|
||||
/* Private macro -------------------------------------------------------------*/
|
||||
/* USER CODE BEGIN PM */
|
||||
|
||||
/* USER CODE END PM */
|
||||
|
||||
/* Private variables ---------------------------------------------------------*/
|
||||
/* USER CODE BEGIN PV */
|
||||
|
||||
/* USER CODE END PV */
|
||||
|
||||
/* Private function prototypes -----------------------------------------------*/
|
||||
/* USER CODE BEGIN PFP */
|
||||
|
||||
/* USER CODE END PFP */
|
||||
|
||||
/* Exported functions --------------------------------------------------------*/
|
||||
|
||||
void PWR_EnterOffMode(void)
|
||||
{
|
||||
/* USER CODE BEGIN EnterOffMode_1 */
|
||||
|
||||
/* USER CODE END EnterOffMode_1 */
|
||||
}
|
||||
|
||||
void PWR_ExitOffMode(void)
|
||||
{
|
||||
/* USER CODE BEGIN ExitOffMode_1 */
|
||||
|
||||
/* USER CODE END ExitOffMode_1 */
|
||||
}
|
||||
|
||||
void PWR_EnterStopMode(void)
|
||||
{
|
||||
/* USER CODE BEGIN EnterStopMode_1 */
|
||||
|
||||
/* USER CODE END EnterStopMode_1 */
|
||||
HAL_SuspendTick();
|
||||
/* Clear Status Flag before entering STOP/STANDBY Mode */
|
||||
LL_PWR_ClearFlag_C1STOP_C1STB();
|
||||
|
||||
/* USER CODE BEGIN EnterStopMode_2 */
|
||||
|
||||
/* USER CODE END EnterStopMode_2 */
|
||||
HAL_PWREx_EnterSTOP2Mode(PWR_STOPENTRY_WFI);
|
||||
/* USER CODE BEGIN EnterStopMode_3 */
|
||||
|
||||
/* USER CODE END EnterStopMode_3 */
|
||||
}
|
||||
|
||||
void PWR_ExitStopMode(void)
|
||||
{
|
||||
/* USER CODE BEGIN ExitStopMode_1 */
|
||||
|
||||
/* USER CODE END ExitStopMode_1 */
|
||||
/* Resume sysTick : work around for debugger problem in dual core */
|
||||
HAL_ResumeTick();
|
||||
/*Not retained periph:
|
||||
ADC interface
|
||||
DAC interface USARTx, TIMx, i2Cx, SPIx
|
||||
SRAM ctrls, DMAx, DMAMux, AES, RNG, HSEM */
|
||||
|
||||
/* Resume not retained USARTx and DMA */
|
||||
vcom_Resume();
|
||||
/* USER CODE BEGIN ExitStopMode_2 */
|
||||
|
||||
/* USER CODE END ExitStopMode_2 */
|
||||
}
|
||||
|
||||
void PWR_EnterSleepMode(void)
|
||||
{
|
||||
/* USER CODE BEGIN EnterSleepMode_1 */
|
||||
|
||||
/* USER CODE END EnterSleepMode_1 */
|
||||
/* Suspend sysTick */
|
||||
HAL_SuspendTick();
|
||||
/* USER CODE BEGIN EnterSleepMode_2 */
|
||||
|
||||
/* USER CODE END EnterSleepMode_2 */
|
||||
HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI);
|
||||
/* USER CODE BEGIN EnterSleepMode_3 */
|
||||
|
||||
/* USER CODE END EnterSleepMode_3 */
|
||||
}
|
||||
|
||||
void PWR_ExitSleepMode(void)
|
||||
{
|
||||
/* USER CODE BEGIN ExitSleepMode_1 */
|
||||
|
||||
/* USER CODE END ExitSleepMode_1 */
|
||||
/* Resume sysTick */
|
||||
HAL_ResumeTick();
|
||||
|
||||
/* USER CODE BEGIN ExitSleepMode_2 */
|
||||
|
||||
/* USER CODE END ExitSleepMode_2 */
|
||||
}
|
||||
|
||||
/* USER CODE BEGIN EF */
|
||||
|
||||
/* USER CODE END EF */
|
||||
|
||||
/* Private Functions Definition -----------------------------------------------*/
|
||||
/* USER CODE BEGIN PrFD */
|
||||
|
||||
/* USER CODE END PrFD */
|
||||
Reference in New Issue
Block a user