You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
ASYD/ASYD_Trends/tinyK22_LowPower_Modes/source/LowPower.h

55 lines
1.9 KiB

/*
* Copyright (c) 2019, Erich Styger
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef LOWPOWER_H_
#define LOWPOWER_H_
#include <stdbool.h>
#include "fsl_smc.h"
/* Power mode definition used in application. */
typedef enum _app_power_mode {
kAPP_PowerModeRun, /* Normal RUN mode */
kAPP_PowerModeWait, /* WAIT mode. */
kAPP_PowerModeStop, /* STOP mode. */
kAPP_PowerModeVlpr, /* VLPR mode. */
kAPP_PowerModeVlpw, /* VLPW mode. */
kAPP_PowerModeVlps, /* VLPS mode. */
kAPP_PowerModeLls, /* LLS mode. */
kAPP_PowerModeVlls0, /* VLLS0 mode. */
kAPP_PowerModeVlls1, /* VLLS1 mode. */
kAPP_PowerModeVlls2, /* VLLS2 mode. */
kAPP_PowerModeVlls3, /* VLLS3 mode. */
kAPP_PowerModeHsrun, /* HighSpeed RUN mode */
} app_power_mode_t;
typedef enum _app_wakeup_source {
kAPP_WakeupSourceLptmr, /*!< Wakeup by LPTMR. */
kAPP_WakeupSourcePin /*!< Wakeup by external pin. */
} app_wakeup_source_t;
/* check if switching to a power mode is possible */
bool LP_CheckPowerMode(smc_power_state_t curPowerState, app_power_mode_t targetPowerMode);
/* set of different low power modes: */
#define LP_MODE_RUN (0) /* run mode, actually no low power mode. */
#define LP_MODE_WAIT (1) /* wait mode, wfi, disables only CPU clock, wake-up is any interrupt. */
#define LP_MODE_STOP (2) /* stop mode, lowest power mode that retains all registers while maintaining LVD detection, wakeup by interrupt or reset. */
#define LP_MODE_VLPR (3) /* VLPR mode */
/* selected low power mode: */
//#define LP_MODE LP_MODE_RUN /* the low power mode to be used */
#define LP_MODE LP_MODE_WAIT /* the low power mode to be used */
//#define LP_MODE LP_MODE_STOP /* the low power mode to be used */
//#define LP_MODE LP_MODE_VLPR
smc_power_state_t LP_GetCurrPowerMode(void);
void LP_EnterLowPower(app_power_mode_t targetPowerMode);
void LP_Init(void);
#endif /* LOWPOWER_H_ */