168 lines
4.4 KiB
C
168 lines
4.4 KiB
C
/**
|
|
******************************************************************************
|
|
* @file stm32_lpm.h
|
|
* @author MCD Application Team
|
|
* @brief Header for stm32_lpm.c module
|
|
******************************************************************************
|
|
* @attention
|
|
*
|
|
* <h2><center>© Copyright (c) 2019 STMicroelectronics.
|
|
* All rights reserved.</center></h2>
|
|
*
|
|
* 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.
|
|
*
|
|
******************************************************************************
|
|
*/
|
|
|
|
/* Define to prevent recursive inclusion -------------------------------------*/
|
|
#ifndef STM32_TINY_LPM_H
|
|
#define STM32_TINY_LPM_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* Includes ------------------------------------------------------------------*/
|
|
#include "stdint.h"
|
|
|
|
/** @defgroup TINY_LPM TINY LPM
|
|
* @{
|
|
*/
|
|
|
|
/* Exported typedef ---------------------------------------------------------*/
|
|
/** @defgroup TINY_LPM_Exported_typedef TINY LPM exported typedef
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* @brief type definition to represent the bit mask of an LPM mode
|
|
*/
|
|
typedef uint32_t UTIL_LPM_bm_t;
|
|
|
|
/**
|
|
* @brief type definition to represent value of an LPM mode
|
|
*/
|
|
typedef enum
|
|
{
|
|
UTIL_LPM_ENABLE=0,
|
|
UTIL_LPM_DISABLE,
|
|
} UTIL_LPM_State_t;
|
|
|
|
/**
|
|
* @brief type definition to represent the different type of LPM mode
|
|
*/
|
|
|
|
typedef enum
|
|
{
|
|
UTIL_LPM_SLEEPMODE,
|
|
UTIL_LPM_STOPMODE,
|
|
UTIL_LPM_OFFMODE,
|
|
} UTIL_LPM_Mode_t;
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/** @defgroup TINY_LPM_Exported_struct TINY LPM exported struct
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* @brief LPM driver definition
|
|
*/
|
|
struct UTIL_LPM_Driver_s
|
|
{
|
|
void (*EnterSleepMode) ( void ); /*!<function to enter the sleep mode */
|
|
void (*ExitSleepMode) ( void ); /*!<function to exit the sleep mode */
|
|
void (*EnterStopMode) ( void ); /*!<function to enter the stop mode */
|
|
void (*ExitStopMode) ( void ); /*!<function to exit the stop mode */
|
|
void (*EnterOffMode) ( void ); /*!<function to enter the off mode */
|
|
void (*ExitOffMode) ( void ); /*!<function to exit the off mode */
|
|
};
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/* External variables --------------------------------------------------------*/
|
|
|
|
/** @defgroup TINY_LPM_Exported_struct TINY LPM exported struct
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* @brief LPM driver
|
|
*
|
|
* @note This structure is defined and initialized in the specific platform
|
|
* power implementation
|
|
*/
|
|
extern const struct UTIL_LPM_Driver_s UTIL_PowerDriver;
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
/* Exported macros -----------------------------------------------------------*/
|
|
/* Exported functions ------------------------------------------------------- */
|
|
|
|
/** @defgroup TINY_LPM_Exported_function TINY LPM exported functions
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* @brief This API Initializes the LPM resources.
|
|
*/
|
|
void UTIL_LPM_Init( void );
|
|
|
|
/**
|
|
* @brief This API Un-Initializes the LPM resources.
|
|
*/
|
|
void UTIL_LPM_DeInit( void );
|
|
|
|
/**
|
|
* @brief This API returns the Low Power Mode selected that will be applied when the system will enter low power mode
|
|
* if there is no update between the time the mode is read with this API and the time the system enters
|
|
* low power mode.
|
|
* @retval the LPM mode based on @ref UTIL_LPM_Mode_t
|
|
*/
|
|
UTIL_LPM_Mode_t UTIL_LPM_GetMode( void );
|
|
|
|
/**
|
|
* @brief This API notifies the low power manager if the specified user allows the Stop mode or not.
|
|
* The default mode selection for all users is Stop Mode enabled
|
|
* @param lpm_id_bm: identifier of the user ( 1 bit per user )
|
|
* @param state: Specify whether StopMode is allowed or not by this user
|
|
*/
|
|
void UTIL_LPM_SetStopMode( UTIL_LPM_bm_t lpm_id_bm, UTIL_LPM_State_t state );
|
|
|
|
/**
|
|
* @brief This API notifies the low power manager if the specified user allows the Off mode or not.
|
|
* The default mode selection for all users is Off mode enabled
|
|
* @param lpm_id_bm: identifier of the user ( 1 bit per user )
|
|
* @param state: Specify whether OffMode is allowed or not by this user
|
|
*/
|
|
void UTIL_LPM_SetOffMode( UTIL_LPM_bm_t lpm_id_bm, UTIL_LPM_State_t state );
|
|
|
|
/**
|
|
* @brief This API is called by the low power manager in a critical section (PRIMASK bit set) to allow the
|
|
* application to implement dedicated code before entering Low Power Mode
|
|
*/
|
|
void UTIL_LPM_EnterLowPower( void );
|
|
|
|
/**
|
|
*@}
|
|
*/
|
|
|
|
/**
|
|
*@}
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* STM32_TINY_LPM_H */
|
|
|