1018 lines
37 KiB
C
1018 lines
37 KiB
C
/**
|
||
*******************************************************************************************************
|
||
* @file fm33lg0xx_fl_pmu.h
|
||
* @author FMSH Application Team
|
||
* @brief Head file of PMU FL Module
|
||
*******************************************************************************************************
|
||
* @attention
|
||
*
|
||
* Copyright (c) [2021] [Fudan Microelectronics]
|
||
* THIS SOFTWARE is licensed under Mulan PSL v2.
|
||
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||
* You may obtain a copy of Mulan PSL v2 at:
|
||
* http://license.coscl.org.cn/MulanPSL2
|
||
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||
* See the Mulan PSL v2 for more details.
|
||
*
|
||
*******************************************************************************************************
|
||
*/
|
||
|
||
|
||
/* Define to prevent recursive inclusion---------------------------------------------------------------*/
|
||
#ifndef __FM33LG0XX_FL_PMU_H
|
||
#define __FM33LG0XX_FL_PMU_H
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
/* Includes -------------------------------------------------------------------------------------------*/
|
||
#include "fm33lg0xx_fl_def.h"
|
||
/** @addtogroup FM33LG0XX_FL_Driver
|
||
* @{
|
||
*/
|
||
|
||
/** @defgroup PMU PMU
|
||
* @brief PMU FL driver
|
||
* @{
|
||
*/
|
||
|
||
/* Exported types -------------------------------------------------------------------------------------*/
|
||
/** @defgroup PMU_FL_ES_INIT PMU Exported Init structures
|
||
* @{
|
||
*/
|
||
|
||
/**
|
||
* @brief FL PMU Init Sturcture definition
|
||
*/
|
||
typedef struct
|
||
{
|
||
/*! 低功耗模式配置 */
|
||
uint32_t powerMode;
|
||
/*! 低功耗模式下内核电压降低与否 */
|
||
FL_FunState coreVoltageScaling;
|
||
/*! 睡眠模式配置 */
|
||
uint32_t deepSleep;
|
||
/*! 唤醒后的系统频率,仅对RCHF */
|
||
uint32_t wakeupFrequency;
|
||
/*! 芯片LDO是否进入低功耗 */
|
||
uint32_t LDOLowPowerMode;
|
||
/*! 额外唤醒延迟 */
|
||
uint32_t wakeupDelay;
|
||
} FL_PMU_SleepInitTypeDef;
|
||
|
||
/**
|
||
* @}
|
||
*/
|
||
/* Exported constants ---------------------------------------------------------------------------------*/
|
||
/** @defgroup PMU_FL_Exported_Constants PMU Exported Constants
|
||
* @{
|
||
*/
|
||
|
||
#define PMU_CR_LDO_LPM_Pos (18U)
|
||
#define PMU_CR_LDO_LPM_Msk (0x3U << PMU_CR_LDO_LPM_Pos)
|
||
#define PMU_CR_LDO_LPM PMU_CR_LDO_LPM_Msk
|
||
|
||
#define PMU_CR_LDO15EN_Pos (17U)
|
||
#define PMU_CR_LDO15EN_Msk (0x1U << PMU_CR_LDO15EN_Pos)
|
||
#define PMU_CR_LDO15EN PMU_CR_LDO15EN_Msk
|
||
|
||
#define PMU_CR_LDO15EN_B_Pos (16U)
|
||
#define PMU_CR_LDO15EN_B_Msk (0x1U << PMU_CR_LDO15EN_B_Pos)
|
||
#define PMU_CR_LDO15EN_B PMU_CR_LDO15EN_B_Msk
|
||
|
||
#define PMU_CR_WKFSEL_Pos (10U)
|
||
#define PMU_CR_WKFSEL_Msk (0x3U << PMU_CR_WKFSEL_Pos)
|
||
#define PMU_CR_WKFSEL PMU_CR_WKFSEL_Msk
|
||
|
||
#define PMU_CR_SLPDP_Pos (9U)
|
||
#define PMU_CR_SLPDP_Msk (0x1U << PMU_CR_SLPDP_Pos)
|
||
#define PMU_CR_SLPDP PMU_CR_SLPDP_Msk
|
||
|
||
#define PMU_CR_CVS_Pos (8U)
|
||
#define PMU_CR_CVS_Msk (0x1U << PMU_CR_CVS_Pos)
|
||
#define PMU_CR_CVS PMU_CR_CVS_Msk
|
||
|
||
#define PMU_CR_PMOD_Pos (0U)
|
||
#define PMU_CR_PMOD_Msk (0x3U << PMU_CR_PMOD_Pos)
|
||
#define PMU_CR_PMOD PMU_CR_PMOD_Msk
|
||
|
||
#define PMU_WKTR_VREFDLY_Pos (3U)
|
||
#define PMU_WKTR_VREFDLY_Msk (0x1U << PMU_WKTR_VREFDLY_Pos)
|
||
#define PMU_WKTR_VREFDLY PMU_WKTR_VREFDLY_Msk
|
||
|
||
#define PMU_WKTR_STPCLR_Pos (2U)
|
||
#define PMU_WKTR_STPCLR_Msk (0x1U << PMU_WKTR_STPCLR_Pos)
|
||
#define PMU_WKTR_STPCLR PMU_WKTR_STPCLR_Msk
|
||
|
||
#define PMU_WKTR_T1A_Pos (0U)
|
||
#define PMU_WKTR_T1A_Msk (0x3U << PMU_WKTR_T1A_Pos)
|
||
#define PMU_WKTR_T1A PMU_WKTR_T1A_Msk
|
||
|
||
#define PMU_WKFR_ADCWKF_Pos (31U)
|
||
#define PMU_WKFR_ADCWKF_Msk (0x1U << PMU_WKFR_ADCWKF_Pos)
|
||
#define PMU_WKFR_ADCWKF PMU_WKFR_ADCWKF_Msk
|
||
|
||
#define PMU_WKFR_UART1WKF_Pos (30U)
|
||
#define PMU_WKFR_UART1WKF_Msk (0x1U << PMU_WKFR_UART1WKF_Pos)
|
||
#define PMU_WKFR_UART1WKF PMU_WKFR_UART1WKF_Msk
|
||
|
||
#define PMU_WKFR_UART0WKF_Pos (29U)
|
||
#define PMU_WKFR_UART0WKF_Msk (0x1U << PMU_WKFR_UART0WKF_Pos)
|
||
#define PMU_WKFR_UART0WKF PMU_WKFR_UART0WKF_Msk
|
||
|
||
#define PMU_WKFR_RTCWKF_Pos (28U)
|
||
#define PMU_WKFR_RTCWKF_Msk (0x1U << PMU_WKFR_RTCWKF_Pos)
|
||
#define PMU_WKFR_RTCWKF PMU_WKFR_RTCWKF_Msk
|
||
|
||
#define PMU_WKFR_SVDWKF_Pos (27U)
|
||
#define PMU_WKFR_SVDWKF_Msk (0x1U << PMU_WKFR_SVDWKF_Pos)
|
||
#define PMU_WKFR_SVDWKF PMU_WKFR_SVDWKF_Msk
|
||
|
||
#define PMU_WKFR_LFDETWKF_Pos (26U)
|
||
#define PMU_WKFR_LFDETWKF_Msk (0x1U << PMU_WKFR_LFDETWKF_Pos)
|
||
#define PMU_WKFR_LFDETWKF PMU_WKFR_LFDETWKF_Msk
|
||
|
||
#define PMU_WKFR_VREFWKF_Pos (25U)
|
||
#define PMU_WKFR_VREFWKF_Msk (0x1U << PMU_WKFR_VREFWKF_Pos)
|
||
#define PMU_WKFR_VREFWKF PMU_WKFR_VREFWKF_Msk
|
||
|
||
#define PMU_WKFR_IOWKF_Pos (24U)
|
||
#define PMU_WKFR_IOWKF_Msk (0x1U << PMU_WKFR_IOWKF_Pos)
|
||
#define PMU_WKFR_IOWKF PMU_WKFR_IOWKF_Msk
|
||
|
||
#define PMU_WKFR_IICWKF_Pos (23U)
|
||
#define PMU_WKFR_IICWKF_Msk (0x1U << PMU_WKFR_IICWKF_Pos)
|
||
#define PMU_WKFR_IICWKF PMU_WKFR_IICWKF_Msk
|
||
|
||
#define PMU_WKFR_LPU2WKF_Pos (22U)
|
||
#define PMU_WKFR_LPU2WKF_Msk (0x1U << PMU_WKFR_LPU2WKF_Pos)
|
||
#define PMU_WKFR_LPU2WKF PMU_WKFR_LPU2WKF_Msk
|
||
|
||
#define PMU_WKFR_LPU1WKF_Pos (21U)
|
||
#define PMU_WKFR_LPU1WKF_Msk (0x1U << PMU_WKFR_LPU1WKF_Pos)
|
||
#define PMU_WKFR_LPU1WKF PMU_WKFR_LPU1WKF_Msk
|
||
|
||
#define PMU_WKFR_LPU0WKF_Pos (20U)
|
||
#define PMU_WKFR_LPU0WKF_Msk (0x1U << PMU_WKFR_LPU0WKF_Pos)
|
||
#define PMU_WKFR_LPU0WKF PMU_WKFR_LPU0WKF_Msk
|
||
|
||
#define PMU_WKFR_COMP3WKF_Pos (18U)
|
||
#define PMU_WKFR_COMP3WKF_Msk (0x1U << PMU_WKFR_COMP3WKF_Pos)
|
||
#define PMU_WKFR_COMP3WKF PMU_WKFR_COMP3WKF_Msk
|
||
|
||
#define PMU_WKFR_COMP2WKF_Pos (17U)
|
||
#define PMU_WKFR_COMP2WKF_Msk (0x1U << PMU_WKFR_COMP2WKF_Pos)
|
||
#define PMU_WKFR_COMP2WKF PMU_WKFR_COMP2WKF_Msk
|
||
|
||
#define PMU_WKFR_COMP1WKF_Pos (16U)
|
||
#define PMU_WKFR_COMP1WKF_Msk (0x1U << PMU_WKFR_COMP1WKF_Pos)
|
||
#define PMU_WKFR_COMP1WKF PMU_WKFR_COMP1WKF_Msk
|
||
|
||
#define PMU_WKFR_LPT32WKF_Pos (14U)
|
||
#define PMU_WKFR_LPT32WKF_Msk (0x1U << PMU_WKFR_LPT32WKF_Pos)
|
||
#define PMU_WKFR_LPT32WKF PMU_WKFR_LPT32WKF_Msk
|
||
|
||
#define PMU_WKFR_LPT16WKF_Pos (13U)
|
||
#define PMU_WKFR_LPT16WKF_Msk (0x1U << PMU_WKFR_LPT16WKF_Pos)
|
||
#define PMU_WKFR_LPT16WKF PMU_WKFR_LPT16WKF_Msk
|
||
|
||
#define PMU_WKFR_BST32WKF_Pos (12U)
|
||
#define PMU_WKFR_BST32WKF_Msk (0x1U << PMU_WKFR_BST32WKF_Pos)
|
||
#define PMU_WKFR_BST32WKF PMU_WKFR_BST32WKF_Msk
|
||
|
||
#define PMU_WKFR_BST16WKF_Pos (11U)
|
||
#define PMU_WKFR_BST16WKF_Msk (0x1U << PMU_WKFR_BST16WKF_Pos)
|
||
#define PMU_WKFR_BST16WKF PMU_WKFR_BST16WKF_Msk
|
||
|
||
#define PMU_WKFR_DBGWKF_Pos (10U)
|
||
#define PMU_WKFR_DBGWKF_Msk (0x1U << PMU_WKFR_DBGWKF_Pos)
|
||
#define PMU_WKFR_DBGWKF PMU_WKFR_DBGWKF_Msk
|
||
|
||
#define PMU_WKFR_WKPXF_Pos (0U)
|
||
#define PMU_WKFR_WKPXF_Msk (0x3ffU << PMU_WKFR_WKPXF_Pos)
|
||
#define PMU_WKFR_WKPXF PMU_WKFR_WKPXF_Msk
|
||
|
||
#define PMU_IER_LPACTIE_Pos (2U)
|
||
#define PMU_IER_LPACTIE_Msk (0x1U << PMU_IER_LPACTIE_Pos)
|
||
#define PMU_IER_LPACTIE PMU_IER_LPACTIE_Msk
|
||
|
||
#define PMU_IER_SLPEIE_Pos (1U)
|
||
#define PMU_IER_SLPEIE_Msk (0x1U << PMU_IER_SLPEIE_Pos)
|
||
#define PMU_IER_SLPEIE PMU_IER_SLPEIE_Msk
|
||
|
||
#define PMU_IER_LPREIE_Pos (0U)
|
||
#define PMU_IER_LPREIE_Msk (0x1U << PMU_IER_LPREIE_Pos)
|
||
#define PMU_IER_LPREIE PMU_IER_LPREIE_Msk
|
||
|
||
#define PMU_ISR_LPACTIF_Pos (2U)
|
||
#define PMU_ISR_LPACTIF_Msk (0x1U << PMU_ISR_LPACTIF_Pos)
|
||
#define PMU_ISR_LPACTIF PMU_ISR_LPACTIF_Msk
|
||
|
||
#define PMU_ISR_SLPEIF_Pos (1U)
|
||
#define PMU_ISR_SLPEIF_Msk (0x1U << PMU_ISR_SLPEIF_Pos)
|
||
#define PMU_ISR_SLPEIF PMU_ISR_SLPEIF_Msk
|
||
|
||
#define PMU_ISR_LPREIF_Pos (0U)
|
||
#define PMU_ISR_LPREIF_Msk (0x1U << PMU_ISR_LPREIF_Pos)
|
||
#define PMU_ISR_LPREIF PMU_ISR_LPREIF_Msk
|
||
|
||
|
||
|
||
#define FL_PMU_WAKEUP0_PIN (0x1U << 0U)
|
||
#define FL_PMU_WAKEUP1_PIN (0x1U << 1U)
|
||
#define FL_PMU_WAKEUP2_PIN (0x1U << 2U)
|
||
#define FL_PMU_WAKEUP3_PIN (0x1U << 3U)
|
||
#define FL_PMU_WAKEUP4_PIN (0x1U << 4U)
|
||
#define FL_PMU_WAKEUP5_PIN (0x1U << 5U)
|
||
#define FL_PMU_WAKEUP6_PIN (0x1U << 6U)
|
||
#define FL_PMU_WAKEUP7_PIN (0x1U << 7U)
|
||
#define FL_PMU_WAKEUP8_PIN (0x1U << 8U)
|
||
#define FL_PMU_WAKEUP9_PIN (0x1U << 9U)
|
||
|
||
|
||
|
||
#define FL_PMU_LDO_LPM_DISABLE (0x0U << PMU_CR_LDO_LPM_Pos)
|
||
#define FL_PMU_LDO_LPM_ENABLE (0x2U << PMU_CR_LDO_LPM_Pos)
|
||
|
||
|
||
#define FL_PMU_RCHF_WAKEUP_FREQ_8MHZ (0x0U << PMU_CR_WKFSEL_Pos)
|
||
#define FL_PMU_RCHF_WAKEUP_FREQ_16MHZ (0x1U << PMU_CR_WKFSEL_Pos)
|
||
#define FL_PMU_RCHF_WAKEUP_FREQ_24MHZ (0x2U << PMU_CR_WKFSEL_Pos)
|
||
|
||
|
||
#define FL_PMU_SLEEP_MODE_DEEP (0x1U << PMU_CR_SLPDP_Pos)
|
||
#define FL_PMU_SLEEP_MODE_NORMAL (0x0U << PMU_CR_SLPDP_Pos)
|
||
|
||
|
||
#define FL_PMU_POWER_MODE_ACTIVE_OR_LPACTIVE (0x0U << PMU_CR_PMOD_Pos)
|
||
#define FL_PMU_POWER_MODE_LPRUN_ONLY (0x1U << PMU_CR_PMOD_Pos)
|
||
#define FL_PMU_POWER_MODE_SLEEP_OR_DEEPSLEEP (0x2U << PMU_CR_PMOD_Pos)
|
||
|
||
#define FL_PMU_WAKEUP_DELAY_MODE_IMMEDIATE (0x0U << PMU_WKTR_VREFDLY_Pos)
|
||
#define FL_PMU_WAKEUP_DELAY_MODE_WAIT_VREF1P2 (0x1U << PMU_WKTR_VREFDLY_Pos)
|
||
|
||
|
||
#define FL_PMU_FLASH_STOP_CLEAR_MODE_SYNCHRONOUS (0x0U << PMU_WKTR_STPCLR_Pos)
|
||
#define FL_PMU_FLASH_STOP_CLEAR_MODE_ASYNCHRONOUS (0x1U << PMU_WKTR_STPCLR_Pos)
|
||
|
||
|
||
#define FL_PMU_WAKEUP_DELAY_0US (0x0U << PMU_WKTR_T1A_Pos)
|
||
#define FL_PMU_WAKEUP_DELAY_2US (0x1U << PMU_WKTR_T1A_Pos)
|
||
#define FL_PMU_WAKEUP_DELAY_4US (0x2U << PMU_WKTR_T1A_Pos)
|
||
#define FL_PMU_WAKEUP_DELAY_8US (0x3U << PMU_WKTR_T1A_Pos)
|
||
|
||
|
||
/**
|
||
* @}
|
||
*/
|
||
/* Exported functions ---------------------------------------------------------------------------------*/
|
||
/** @defgroup PMU_FL_Exported_Functions PMU Exported Functions
|
||
* @{
|
||
*/
|
||
|
||
/**
|
||
* @brief Set LDO Low Power Mode
|
||
* @rmtoll CR LDO_LPM FL_PMU_SetLDOLowPowerMode
|
||
* @param PMUx PMU instance
|
||
* @param mode This parameter can be one of the following values:
|
||
* @arg @ref FL_PMU_LDO_LPM_DISABLE
|
||
* @arg @ref FL_PMU_LDO_LPM_ENABLE
|
||
* @retval None
|
||
*/
|
||
__STATIC_INLINE void FL_PMU_SetLDOLowPowerMode(PMU_Type *PMUx, uint32_t mode)
|
||
{
|
||
MODIFY_REG(PMUx->CR, PMU_CR_LDO_LPM_Msk, mode);
|
||
}
|
||
|
||
/**
|
||
* @brief Get LDO Low Power Mode Setting
|
||
* @rmtoll CR LDO_LPM FL_PMU_GetLDOLowPowerMode
|
||
* @param PMUx PMU instance
|
||
* @retval Returned value can be one of the following values:
|
||
* @arg @ref FL_PMU_LDO_LPM_DISABLE
|
||
* @arg @ref FL_PMU_LDO_LPM_ENABLE
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_GetLDOLowPowerMode(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->CR, PMU_CR_LDO_LPM_Msk));
|
||
}
|
||
|
||
/**
|
||
* @brief Get LDO15 Enable Status
|
||
* @rmtoll CR LDO15EN FL_PMU_GetLDO15Status
|
||
* @param PMUx PMU instance
|
||
* @retval Returned value can be one of the following values:
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_GetLDO15Status(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->CR, PMU_CR_LDO15EN_Msk));
|
||
}
|
||
|
||
/**
|
||
* @brief Get LDO15 Inverse check bit
|
||
* @rmtoll CR LDO15EN_B FL_PMU_GetLDO15StatusInvert
|
||
* @param PMUx PMU instance
|
||
* @retval Returned value can be one of the following values:
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_GetLDO15StatusInvert(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->CR, PMU_CR_LDO15EN_B_Msk));
|
||
}
|
||
|
||
/**
|
||
* @brief Set RCHF Frequency After Wakeup
|
||
* @rmtoll CR WKFSEL FL_PMU_SetRCHFWakeupFrequency
|
||
* @param PMUx PMU instance
|
||
* @param Freq This parameter can be one of the following values:
|
||
* @arg @ref FL_PMU_RCHF_WAKEUP_FREQ_8MHZ
|
||
* @arg @ref FL_PMU_RCHF_WAKEUP_FREQ_16MHZ
|
||
* @arg @ref FL_PMU_RCHF_WAKEUP_FREQ_24MHZ
|
||
* @retval None
|
||
*/
|
||
__STATIC_INLINE void FL_PMU_SetRCHFWakeupFrequency(PMU_Type *PMUx, uint32_t Freq)
|
||
{
|
||
MODIFY_REG(PMUx->CR, PMU_CR_WKFSEL_Msk, Freq);
|
||
}
|
||
|
||
/**
|
||
* @brief Get RCHF Frequency After Wakeup Setting
|
||
* @rmtoll CR WKFSEL FL_PMU_GetRCHFWakeupFrequency
|
||
* @param PMUx PMU instance
|
||
* @retval Returned value can be one of the following values:
|
||
* @arg @ref FL_PMU_RCHF_WAKEUP_FREQ_8MHZ
|
||
* @arg @ref FL_PMU_RCHF_WAKEUP_FREQ_16MHZ
|
||
* @arg @ref FL_PMU_RCHF_WAKEUP_FREQ_24MHZ
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_GetRCHFWakeupFrequency(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->CR, PMU_CR_WKFSEL_Msk));
|
||
}
|
||
|
||
/**
|
||
* @brief Set Sleep Mode
|
||
* @rmtoll CR SLPDP FL_PMU_SetSleepMode
|
||
* @param PMUx PMU instance
|
||
* @param mode This parameter can be one of the following values:
|
||
* @arg @ref FL_PMU_SLEEP_MODE_DEEP
|
||
* @arg @ref FL_PMU_SLEEP_MODE_NORMAL
|
||
* @retval None
|
||
*/
|
||
__STATIC_INLINE void FL_PMU_SetSleepMode(PMU_Type *PMUx, uint32_t mode)
|
||
{
|
||
MODIFY_REG(PMUx->CR, PMU_CR_SLPDP_Msk, mode);
|
||
}
|
||
|
||
/**
|
||
* @brief Get Sleep Mode Setting
|
||
* @rmtoll CR SLPDP FL_PMU_GetSleepMode
|
||
* @param PMUx PMU instance
|
||
* @retval Returned value can be one of the following values:
|
||
* @arg @ref FL_PMU_SLEEP_MODE_DEEP
|
||
* @arg @ref FL_PMU_SLEEP_MODE_NORMAL
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_GetSleepMode(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->CR, PMU_CR_SLPDP_Msk));
|
||
}
|
||
|
||
/**
|
||
* @brief Enable Core Voltage Scaling Under Low Power Mode
|
||
* @rmtoll CR CVS FL_PMU_EnableCoreVoltageScaling
|
||
* @param PMUx PMU instance
|
||
* @retval None
|
||
*/
|
||
__STATIC_INLINE void FL_PMU_EnableCoreVoltageScaling(PMU_Type *PMUx)
|
||
{
|
||
SET_BIT(PMUx->CR, PMU_CR_CVS_Msk);
|
||
}
|
||
|
||
/**
|
||
* @brief Get Core Voltage Scaling Under Low Power Mode Enable Status
|
||
* @rmtoll CR CVS FL_PMU_IsEnabledCoreVoltageScaling
|
||
* @param PMUx PMU instance
|
||
* @retval State of bit (1 or 0).
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_IsEnabledCoreVoltageScaling(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->CR, PMU_CR_CVS_Msk) == PMU_CR_CVS_Msk);
|
||
}
|
||
|
||
/**
|
||
* @brief Disable Core Voltage Scaling Under Low Power Mode
|
||
* @rmtoll CR CVS FL_PMU_DisableCoreVoltageScaling
|
||
* @param PMUx PMU instance
|
||
* @retval None
|
||
*/
|
||
__STATIC_INLINE void FL_PMU_DisableCoreVoltageScaling(PMU_Type *PMUx)
|
||
{
|
||
CLEAR_BIT(PMUx->CR, PMU_CR_CVS_Msk);
|
||
}
|
||
|
||
/**
|
||
* @brief Set Low Power Mode
|
||
* @rmtoll CR PMOD FL_PMU_SetLowPowerMode
|
||
* @param PMUx PMU instance
|
||
* @param mode This parameter can be one of the following values:
|
||
* @arg @ref FL_PMU_POWER_MODE_ACTIVE_OR_LPACTIVE
|
||
* @arg @ref FL_PMU_POWER_MODE_LPRUN_ONLY
|
||
* @arg @ref FL_PMU_POWER_MODE_SLEEP_OR_DEEPSLEEP
|
||
* @retval None
|
||
*/
|
||
__STATIC_INLINE void FL_PMU_SetLowPowerMode(PMU_Type *PMUx, uint32_t mode)
|
||
{
|
||
MODIFY_REG(PMUx->CR, PMU_CR_PMOD_Msk, mode);
|
||
}
|
||
|
||
/**
|
||
* @brief Get Low Power Mode Setting
|
||
* @rmtoll CR PMOD FL_PMU_GetLowPowerMode
|
||
* @param PMUx PMU instance
|
||
* @retval Returned value can be one of the following values:
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_GetLowPowerMode(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->CR, PMU_CR_PMOD_Msk));
|
||
}
|
||
|
||
/**
|
||
* @brief Set VREF delay wakeup mode
|
||
* @rmtoll WKTR VREFDLY FL_PMU_SetVREFWakeupDelayMode
|
||
* @param PMUx PMU instance
|
||
* @param VREFDelay This parameter can be one of the following values:
|
||
* @arg @ref FL_PMU_WAKEUP_DELAY_MODE_IMMEDIATE
|
||
* @arg @ref FL_PMU_WAKEUP_DELAY_MODE_WAIT_VREF1P2
|
||
* @retval None
|
||
*/
|
||
__STATIC_INLINE void FL_PMU_SetVREFWakeupDelayMode(PMU_Type *PMUx, uint32_t VREFDelay)
|
||
{
|
||
MODIFY_REG(PMUx->WKTR, PMU_WKTR_VREFDLY_Msk, VREFDelay);
|
||
}
|
||
|
||
/**
|
||
* @brief Get VREF delay wakeup status
|
||
* @rmtoll WKTR VREFDLY FL_PMU_GetVREFWakeupDelayMode
|
||
* @param PMUx PMU instance
|
||
* @retval Returned value can be one of the following values:
|
||
* @arg @ref FL_PMU_WAKEUP_DELAY_MODE_IMMEDIATE
|
||
* @arg @ref FL_PMU_WAKEUP_DELAY_MODE_WAIT_VREF1P2
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_GetVREFWakeupDelayMode(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->WKTR, PMU_WKTR_VREFDLY_Msk));
|
||
}
|
||
|
||
/**
|
||
* @brief Set Flash Stop Signal Clear Way
|
||
* @rmtoll WKTR STPCLR FL_PMU_SetFlashStopSignalClearMode
|
||
* @param PMUx PMU instance
|
||
* @param config This parameter can be one of the following values:
|
||
* @arg @ref FL_PMU_FLASH_STOP_CLEAR_MODE_ASYNCHRONOUS
|
||
* @arg @ref FL_PMU_FLASH_STOP_CLEAR_MODE_SYNCHRONOUS
|
||
* @retval None
|
||
*/
|
||
__STATIC_INLINE void FL_PMU_SetFlashStopSignalClearMode(PMU_Type *PMUx, uint32_t config)
|
||
{
|
||
MODIFY_REG(PMUx->WKTR, PMU_WKTR_STPCLR_Msk, config);
|
||
}
|
||
|
||
/**
|
||
* @brief Get Flash Stop Signal Clear Way Setting
|
||
* @rmtoll WKTR STPCLR FL_PMU_GetFlashStopSignalClearMode
|
||
* @param PMUx PMU instance
|
||
* @retval Returned value can be one of the following values:
|
||
* @arg @ref FL_PMU_FLASH_STOP_CLEAR_MODE_ASYNCHRONOUS
|
||
* @arg @ref FL_PMU_FLASH_STOP_CLEAR_MODE_SYNCHRONOUS
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_GetFlashStopSignalClearMode(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->WKTR, PMU_WKTR_STPCLR_Msk));
|
||
}
|
||
|
||
/**
|
||
* @brief Set Extra Wakeup Delay Under Sleep/DeepSleep Mode
|
||
* @rmtoll WKTR T1A FL_PMU_SetWakeupDelay
|
||
* @param PMUx PMU instance
|
||
* @param time This parameter can be one of the following values:
|
||
* @arg @ref FL_PMU_WAKEUP_DELAY_0US
|
||
* @arg @ref FL_PMU_WAKEUP_DELAY_2US
|
||
* @arg @ref FL_PMU_WAKEUP_DELAY_4US
|
||
* @arg @ref FL_PMU_WAKEUP_DELAY_8US
|
||
* @retval None
|
||
*/
|
||
__STATIC_INLINE void FL_PMU_SetWakeupDelay(PMU_Type *PMUx, uint32_t time)
|
||
{
|
||
MODIFY_REG(PMUx->WKTR, PMU_WKTR_T1A_Msk, time);
|
||
}
|
||
|
||
/**
|
||
* @brief Get Extra Wakeup Delay Under Sleep/DeepSleep Mode Setting
|
||
* @rmtoll WKTR T1A FL_PMU_GetWakeupDelay
|
||
* @param PMUx PMU instance
|
||
* @retval Returned value can be one of the following values:
|
||
* @arg @ref FL_PMU_WAKEUP_DELAY_0US
|
||
* @arg @ref FL_PMU_WAKEUP_DELAY_2US
|
||
* @arg @ref FL_PMU_WAKEUP_DELAY_4US
|
||
* @arg @ref FL_PMU_WAKEUP_DELAY_8US
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_GetWakeupDelay(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->WKTR, PMU_WKTR_T1A_Msk));
|
||
}
|
||
|
||
/**
|
||
* @brief Get ADC interrupt wakeup flag
|
||
* @rmtoll WKFR ADCWKF FL_PMU_IsActiveFlag_WakeupADC
|
||
* @param PMUx PMU instance
|
||
* @retval State of bit (1 or 0).
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupADC(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_ADCWKF_Msk) == (PMU_WKFR_ADCWKF_Msk));
|
||
}
|
||
|
||
/**
|
||
* @brief Get UART1 interrupt wakeup flag
|
||
* @rmtoll WKFR UART1WKF FL_PMU_IsActiveFlag_WakeupUART1
|
||
* @param PMUx PMU instance
|
||
* @retval State of bit (1 or 0).
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupUART1(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_UART1WKF_Msk) == (PMU_WKFR_UART1WKF_Msk));
|
||
}
|
||
|
||
/**
|
||
* @brief Get UART0 interrupt wakeup flag
|
||
* @rmtoll WKFR UART0WKF FL_PMU_IsActiveFlag_WakeupUART0
|
||
* @param PMUx PMU instance
|
||
* @retval State of bit (1 or 0).
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupUART0(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_UART0WKF_Msk) == (PMU_WKFR_UART0WKF_Msk));
|
||
}
|
||
|
||
/**
|
||
* @brief Get RTC interrupt wakeup flag
|
||
* @rmtoll WKFR RTCWKF FL_PMU_IsActiveFlag_WakeupRTC
|
||
* @param PMUx PMU instance
|
||
* @retval State of bit (1 or 0).
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupRTC(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_RTCWKF_Msk) == (PMU_WKFR_RTCWKF_Msk));
|
||
}
|
||
|
||
/**
|
||
* @brief Get SVD interrupt wakeup flag
|
||
* @rmtoll WKFR SVDWKF FL_PMU_IsActiveFlag_WakeupSVD
|
||
* @param PMUx PMU instance
|
||
* @retval State of bit (1 or 0).
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupSVD(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_SVDWKF_Msk) == (PMU_WKFR_SVDWKF_Msk));
|
||
}
|
||
|
||
/**
|
||
* @brief Get LFDET interrupt wakeup flag
|
||
* @rmtoll WKFR LFDETWKF FL_PMU_IsActiveFlag_WakeupLFDET
|
||
* @param PMUx PMU instance
|
||
* @retval State of bit (1 or 0).
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupLFDET(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_LFDETWKF_Msk) == (PMU_WKFR_LFDETWKF_Msk));
|
||
}
|
||
|
||
/**
|
||
* @brief Get VREF interrupt wakeup flag
|
||
* @rmtoll WKFR VREFWKF FL_PMU_IsActiveFlag_WakeupVREF
|
||
* @param PMUx PMU instance
|
||
* @retval State of bit (1 or 0).
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupVREF(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_VREFWKF_Msk) == (PMU_WKFR_VREFWKF_Msk));
|
||
}
|
||
|
||
/**
|
||
* @brief Get IO interrupt wakeup flag
|
||
* @rmtoll WKFR IOWKF FL_PMU_IsActiveFlag_WakeupEXTI
|
||
* @param PMUx PMU instance
|
||
* @retval State of bit (1 or 0).
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupEXTI(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_IOWKF_Msk) == (PMU_WKFR_IOWKF_Msk));
|
||
}
|
||
|
||
/**
|
||
* @brief Get I2C interrupt wakeup flag
|
||
* @rmtoll WKFR IICWKF FL_PMU_IsActiveFlag_WakeupI2C
|
||
* @param PMUx PMU instance
|
||
* @retval State of bit (1 or 0).
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupI2C(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_IICWKF_Msk) == (PMU_WKFR_IICWKF_Msk));
|
||
}
|
||
|
||
/**
|
||
* @brief Get LPUART2 interrupt wakeup flag
|
||
* @rmtoll WKFR LPU2WKF FL_PMU_IsActiveFlag_WakeupLPUART2
|
||
* @param PMUx PMU instance
|
||
* @retval State of bit (1 or 0).
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupLPUART2(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_LPU2WKF_Msk) == (PMU_WKFR_LPU2WKF_Msk));
|
||
}
|
||
|
||
/**
|
||
* @brief Get LPUART1 interrupt wakeup flag
|
||
* @rmtoll WKFR LPU1WKF FL_PMU_IsActiveFlag_WakeupLPUART1
|
||
* @param PMUx PMU instance
|
||
* @retval State of bit (1 or 0).
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupLPUART1(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_LPU1WKF_Msk) == (PMU_WKFR_LPU1WKF_Msk));
|
||
}
|
||
|
||
/**
|
||
* @brief Get LPUART0 interrupt wakeup flag
|
||
* @rmtoll WKFR LPU0WKF FL_PMU_IsActiveFlag_WakeupLPUART0
|
||
* @param PMUx PMU instance
|
||
* @retval State of bit (1 or 0).
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupLPUART0(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_LPU0WKF_Msk) == (PMU_WKFR_LPU0WKF_Msk));
|
||
}
|
||
|
||
/**
|
||
* @brief Get COMP3 interrrupt wakeup flag
|
||
* @rmtoll WKFR COMP3WKF FL_PMU_IsActiveFlag_WakeupCOMP3
|
||
* @param PMUx PMU instance
|
||
* @retval State of bit (1 or 0).
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupCOMP3(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_COMP3WKF_Msk) == (PMU_WKFR_COMP3WKF_Msk));
|
||
}
|
||
|
||
/**
|
||
* @brief Get COMP2 interrrupt wakeup flag
|
||
* @rmtoll WKFR COMP2WKF FL_PMU_IsActiveFlag_WakeupCOMP2
|
||
* @param PMUx PMU instance
|
||
* @retval State of bit (1 or 0).
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupCOMP2(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_COMP2WKF_Msk) == (PMU_WKFR_COMP2WKF_Msk));
|
||
}
|
||
|
||
/**
|
||
* @brief Get COMP1 interrrupt wakeup flag
|
||
* @rmtoll WKFR COMP1WKF FL_PMU_IsActiveFlag_WakeupCOMP1
|
||
* @param PMUx PMU instance
|
||
* @retval State of bit (1 or 0).
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupCOMP1(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_COMP1WKF_Msk) == (PMU_WKFR_COMP1WKF_Msk));
|
||
}
|
||
|
||
/**
|
||
* @brief Get LPTIM32 interrupt wakeup flag
|
||
* @rmtoll WKFR LPT32WKF FL_PMU_IsActiveFlag_WakeupLPTIM32
|
||
* @param PMUx PMU instance
|
||
* @retval State of bit (1 or 0).
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupLPTIM32(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_LPT32WKF_Msk) == (PMU_WKFR_LPT32WKF_Msk));
|
||
}
|
||
|
||
/**
|
||
* @brief Get LPTIM16 interrupt wakeup flag
|
||
* @rmtoll WKFR LPT16WKF FL_PMU_IsActiveFlag_WakeupLPTIM16
|
||
* @param PMUx PMU instance
|
||
* @retval State of bit (1 or 0).
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupLPTIM16(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_LPT16WKF_Msk) == (PMU_WKFR_LPT16WKF_Msk));
|
||
}
|
||
|
||
/**
|
||
* @brief Get BSTIM32 interrupt wakeup flag
|
||
* @rmtoll WKFR BST32WKF FL_PMU_IsActiveFlag_WakeupBSTIM32
|
||
* @param PMUx PMU instance
|
||
* @retval State of bit (1 or 0).
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupBSTIM32(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_BST32WKF_Msk) == (PMU_WKFR_BST32WKF_Msk));
|
||
}
|
||
|
||
/**
|
||
* @brief Get BSTIM16 interrupt wakeup flag
|
||
* @rmtoll WKFR BST16WKF FL_PMU_IsActiveFlag_WakeupBSTIM16
|
||
* @param PMUx PMU instance
|
||
* @retval State of bit (1 or 0).
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupBSTIM16(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_BST16WKF_Msk) == (PMU_WKFR_BST16WKF_Msk));
|
||
}
|
||
|
||
/**
|
||
* @brief Get CPU Debugger wakeup flag
|
||
* @rmtoll WKFR DBGWKF FL_PMU_IsActiveFlag_WakeupDBG
|
||
* @param PMUx PMU instance
|
||
* @retval State of bit (1 or 0).
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupDBG(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_DBGWKF_Msk) == (PMU_WKFR_DBGWKF_Msk));
|
||
}
|
||
|
||
/**
|
||
* @brief Clear CPU Debugger wakeup flag
|
||
* @rmtoll WKFR DBGWKF FL_PMU_ClearFlag_WakeupDBG
|
||
* @param PMUx PMU instance
|
||
* @retval None
|
||
*/
|
||
__STATIC_INLINE void FL_PMU_ClearFlag_WakeupDBG(PMU_Type *PMUx)
|
||
{
|
||
WRITE_REG(PMUx->WKFR, PMU_WKFR_DBGWKF_Msk);
|
||
}
|
||
|
||
/**
|
||
* @brief Get pinx wakeup flag
|
||
* @rmtoll WKFR WKPXF FL_PMU_IsActiveFlag_WakeupPIN
|
||
* @param PMUx PMU instance
|
||
* @param Pin This parameter can be one of the following values:
|
||
* @arg @ref FL_PMU_WAKEUP0_PIN
|
||
* @arg @ref FL_PMU_WAKEUP1_PIN
|
||
* @arg @ref FL_PMU_WAKEUP2_PIN
|
||
* @arg @ref FL_PMU_WAKEUP3_PIN
|
||
* @arg @ref FL_PMU_WAKEUP4_PIN
|
||
* @arg @ref FL_PMU_WAKEUP5_PIN
|
||
* @arg @ref FL_PMU_WAKEUP6_PIN
|
||
* @arg @ref FL_PMU_WAKEUP7_PIN
|
||
* @arg @ref FL_PMU_WAKEUP8_PIN
|
||
* @arg @ref FL_PMU_WAKEUP9_PIN
|
||
* @retval Returned value can be one of the following values:
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupPIN(PMU_Type *PMUx, uint32_t Pin)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->WKFR, ((Pin & 0x3ff) << 0x0U)) == ((Pin & 0x3ff) << 0x0U));
|
||
}
|
||
|
||
/**
|
||
* @brief Clear pinx wakeup flag
|
||
* @rmtoll WKFR WKPXF FL_PMU_ClearFlag_WakeupPIN
|
||
* @param PMUx PMU instance
|
||
* @param Pin This parameter can be one of the following values:
|
||
* @arg @ref FL_PMU_WAKEUP0_PIN
|
||
* @arg @ref FL_PMU_WAKEUP1_PIN
|
||
* @arg @ref FL_PMU_WAKEUP2_PIN
|
||
* @arg @ref FL_PMU_WAKEUP3_PIN
|
||
* @arg @ref FL_PMU_WAKEUP4_PIN
|
||
* @arg @ref FL_PMU_WAKEUP5_PIN
|
||
* @arg @ref FL_PMU_WAKEUP6_PIN
|
||
* @arg @ref FL_PMU_WAKEUP7_PIN
|
||
* @arg @ref FL_PMU_WAKEUP8_PIN
|
||
* @arg @ref FL_PMU_WAKEUP9_PIN
|
||
* @retval None
|
||
*/
|
||
__STATIC_INLINE void FL_PMU_ClearFlag_WakeupPIN(PMU_Type *PMUx, uint32_t Pin)
|
||
{
|
||
WRITE_REG(PMUx->WKFR, ((Pin & 0x3ff) << 0x0U));
|
||
}
|
||
|
||
/**
|
||
* @brief LPActive error interrupt enable
|
||
* @rmtoll IER LPACTIE FL_PMU_EnableIT_LPActiveError
|
||
* @param PMUx PMU instance
|
||
* @retval None
|
||
*/
|
||
__STATIC_INLINE void FL_PMU_EnableIT_LPActiveError(PMU_Type *PMUx)
|
||
{
|
||
SET_BIT(PMUx->IER, PMU_IER_LPACTIE_Msk);
|
||
}
|
||
|
||
/**
|
||
* @brief Get LPActive error interrupt enable status
|
||
* @rmtoll IER LPACTIE FL_PMU_IsEnabledIT_LPActiveError
|
||
* @param PMUx PMU instance
|
||
* @retval State of bit (1 or 0).
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_IsEnabledIT_LPActiveError(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->IER, PMU_IER_LPACTIE_Msk) == PMU_IER_LPACTIE_Msk);
|
||
}
|
||
|
||
/**
|
||
* @brief LPActive error interrupt disable
|
||
* @rmtoll IER LPACTIE FL_PMU_DisableIT_LPActiveError
|
||
* @param PMUx PMU instance
|
||
* @retval None
|
||
*/
|
||
__STATIC_INLINE void FL_PMU_DisableIT_LPActiveError(PMU_Type *PMUx)
|
||
{
|
||
CLEAR_BIT(PMUx->IER, PMU_IER_LPACTIE_Msk);
|
||
}
|
||
|
||
/**
|
||
* @brief Sleep error interrupt enable
|
||
* @rmtoll IER SLPEIE FL_PMU_EnableIT_SleepError
|
||
* @param PMUx PMU instance
|
||
* @retval None
|
||
*/
|
||
__STATIC_INLINE void FL_PMU_EnableIT_SleepError(PMU_Type *PMUx)
|
||
{
|
||
SET_BIT(PMUx->IER, PMU_IER_SLPEIE_Msk);
|
||
}
|
||
|
||
/**
|
||
* @brief Get sleep error interrupt enable status
|
||
* @rmtoll IER SLPEIE FL_PMU_IsEnabledIT_SleepError
|
||
* @param PMUx PMU instance
|
||
* @retval State of bit (1 or 0).
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_IsEnabledIT_SleepError(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->IER, PMU_IER_SLPEIE_Msk) == PMU_IER_SLPEIE_Msk);
|
||
}
|
||
|
||
/**
|
||
* @brief Sleep error interrupt disable
|
||
* @rmtoll IER SLPEIE FL_PMU_DisableIT_SleepError
|
||
* @param PMUx PMU instance
|
||
* @retval None
|
||
*/
|
||
__STATIC_INLINE void FL_PMU_DisableIT_SleepError(PMU_Type *PMUx)
|
||
{
|
||
CLEAR_BIT(PMUx->IER, PMU_IER_SLPEIE_Msk);
|
||
}
|
||
|
||
/**
|
||
* @brief LPREIE error interrupt enable
|
||
* @rmtoll IER LPREIE FL_PMU_EnableIT_LPRunError
|
||
* @param PMUx PMU instance
|
||
* @retval None
|
||
*/
|
||
__STATIC_INLINE void FL_PMU_EnableIT_LPRunError(PMU_Type *PMUx)
|
||
{
|
||
SET_BIT(PMUx->IER, PMU_IER_LPREIE_Msk);
|
||
}
|
||
|
||
/**
|
||
* @brief Get LPREIE error interrupt enable status
|
||
* @rmtoll IER LPREIE FL_PMU_IsEnabledIT_LPRunError
|
||
* @param PMUx PMU instance
|
||
* @retval State of bit (1 or 0).
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_IsEnabledIT_LPRunError(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->IER, PMU_IER_LPREIE_Msk) == PMU_IER_LPREIE_Msk);
|
||
}
|
||
|
||
/**
|
||
* @brief LPREIE error interrupt disable
|
||
* @rmtoll IER LPREIE FL_PMU_DisableIT_LPRunError
|
||
* @param PMUx PMU instance
|
||
* @retval None
|
||
*/
|
||
__STATIC_INLINE void FL_PMU_DisableIT_LPRunError(PMU_Type *PMUx)
|
||
{
|
||
CLEAR_BIT(PMUx->IER, PMU_IER_LPREIE_Msk);
|
||
}
|
||
|
||
/**
|
||
* @brief Get LPACTIF error interrupt flag
|
||
* @rmtoll ISR LPACTIF FL_PMU_IsActiveFlag_LPActiveError
|
||
* @param PMUx PMU instance
|
||
* @retval State of bit (1 or 0).
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_LPActiveError(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->ISR, PMU_ISR_LPACTIF_Msk) == (PMU_ISR_LPACTIF_Msk));
|
||
}
|
||
|
||
/**
|
||
* @brief Clear LPACTIF error interrupt flag
|
||
* @rmtoll ISR LPACTIF FL_PMU_ClearFlag_LPActiveError
|
||
* @param PMUx PMU instance
|
||
* @retval None
|
||
*/
|
||
__STATIC_INLINE void FL_PMU_ClearFlag_LPActiveError(PMU_Type *PMUx)
|
||
{
|
||
WRITE_REG(PMUx->ISR, PMU_ISR_LPACTIF_Msk);
|
||
}
|
||
|
||
/**
|
||
* @brief Get SLEEP error interrupt flag
|
||
* @rmtoll ISR SLPEIF FL_PMU_IsActiveFlag_SleepError
|
||
* @param PMUx PMU instance
|
||
* @retval State of bit (1 or 0).
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_SleepError(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->ISR, PMU_ISR_SLPEIF_Msk) == (PMU_ISR_SLPEIF_Msk));
|
||
}
|
||
|
||
/**
|
||
* @brief Clear SLEEP error interrupt flag
|
||
* @rmtoll ISR SLPEIF FL_PMU_ClearFlag_SleepError
|
||
* @param PMUx PMU instance
|
||
* @retval None
|
||
*/
|
||
__STATIC_INLINE void FL_PMU_ClearFlag_SleepError(PMU_Type *PMUx)
|
||
{
|
||
WRITE_REG(PMUx->ISR, PMU_ISR_SLPEIF_Msk);
|
||
}
|
||
|
||
/**
|
||
* @brief Get LPRUN error interrupt flag
|
||
* @rmtoll ISR LPREIF FL_PMU_IsActiveFlag_LPRunError
|
||
* @param PMUx PMU instance
|
||
* @retval State of bit (1 or 0).
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_LPRunError(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->ISR, PMU_ISR_LPREIF_Msk) == (PMU_ISR_LPREIF_Msk));
|
||
}
|
||
|
||
/**
|
||
* @brief Clear LPRUN error interrupt flag
|
||
* @rmtoll ISR LPREIF FL_PMU_ClearFlag_LPRunError
|
||
* @param PMUx PMU instance
|
||
* @retval None
|
||
*/
|
||
__STATIC_INLINE void FL_PMU_ClearFlag_LPRunError(PMU_Type *PMUx)
|
||
{
|
||
WRITE_REG(PMUx->ISR, PMU_ISR_LPREIF_Msk);
|
||
}
|
||
|
||
/**
|
||
* @brief Set ULPBG output VREF
|
||
* @rmtoll ULPB_TR FL_PMU_WriteULPBGOutputTrim
|
||
* @param PMUx PMU instance
|
||
* @param trim
|
||
* @retval None
|
||
*/
|
||
__STATIC_INLINE void FL_PMU_WriteULPBGOutputTrim(PMU_Type *PMUx, uint32_t trim)
|
||
{
|
||
MODIFY_REG(PMUx->ULPB_TR, (0x1fU << 0U), (trim << 0U));
|
||
}
|
||
|
||
/**
|
||
* @brief Get ULPBG output VREF
|
||
* @rmtoll ULPB_TR FL_PMU_ReadULPBGOutputTrim
|
||
* @param PMUx PMU instance
|
||
* @retval
|
||
*/
|
||
__STATIC_INLINE uint32_t FL_PMU_ReadULPBGOutputTrim(PMU_Type *PMUx)
|
||
{
|
||
return (uint32_t)(READ_BIT(PMUx->ULPB_TR, (0x1fU << 0U)) >> 0U);
|
||
}
|
||
|
||
/**
|
||
* @}
|
||
*/
|
||
|
||
/** @defgroup PMU_FL_EF_Init Initialization and de-initialization functions
|
||
* @{
|
||
*/
|
||
FL_ErrorStatus FL_PMU_Sleep_DeInit(PMU_Type *PMUx);
|
||
FL_ErrorStatus FL_PMU_Sleep_Init(PMU_Type *PMUx, FL_PMU_SleepInitTypeDef *LPM_InitStruct);
|
||
void FL_PMU_StructInit(FL_PMU_SleepInitTypeDef *LPM_InitStruct);
|
||
|
||
/**
|
||
* @}
|
||
*/
|
||
|
||
/**
|
||
* @}
|
||
*/
|
||
|
||
/**
|
||
* @}
|
||
*/
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
|
||
#endif /* __FM33LG0XX_FL_PMU_H*/
|
||
|
||
/*************************Py_Code_Generator Version: 0.1-0.14-0.1 @ 2020-10-20*************************/
|
||
/*************************(C) COPYRIGHT Fudan Microelectronics **** END OF FILE*************************/
|