CIU32_L051_M307R/Peripheral/CIU32L051_Lib/Include/ciu32l051_std_pmu.h

408 lines
12 KiB
C
Raw Normal View History

/************************************************************************************************/
/**
* @file ciu32l051_std_pmu.h
* @author MCU Ecosystem Development Team
* @brief PMU STD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD>PMU<EFBFBD><EFBFBD><EFBFBD><EFBFBD>STD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD>
*
*
**************************************************************************************************
* @attention
* Copyright (c) CEC Huada Electronic Design Co.,Ltd. All rights reserved.
*
**************************************************************************************************
*/
/* <20><><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD><C4BC>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD> */
#ifndef CIU32L051_STD_PMU_H
#define CIU32L051_STD_PMU_H
/************************************************************************************************/
/**
* @addtogroup CIU32L051_STD_Driver
* @{
*/
/**
* @defgroup PMU PMU
* @brief <EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD>STD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @{
*/
/************************************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
/*------------------------------------------includes--------------------------------------------*/
#include "ciu32l051_std_common.h"
/*-----------------------------------------type define------------------------------------------*/
/************************************************************************************************/
/**
* @defgroup PMU_Types PMU Types
* @brief PMU<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD>
* @{
*/
/************************************************************************************************/
/**
* @brief PVD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><EFBFBD><EFBFBD>
*/
typedef struct
{
uint32_t level; /**< PVD <20><>ѹ<EFBFBD><D1B9>ֵ:
@arg PMU_PVD_LEVEL_0 ... */
uint32_t alarm_type; /**< PVD <20><>Ч<EFBFBD>źű<C5BA><C5B1>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
@arg PMU_PVD_RISING ... */
uint32_t filter_enable; /**< PVD <20><><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD>ʹ<EFBFBD><CAB9>:
@arg PVD_FILTER_TIME_ENABLE
@arg PVD_FILTER_TIME_DISABLE */
uint32_t filter_time; /**< PVD <20><><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
@arg PVD_FILTER_TIME_2PCLK ... */
}std_pvd_init_t;
/**
* @}
*/
/*--------------------------------------------define--------------------------------------------*/
/************************************************************************************************/
/**
* @defgroup PMU_Constants PMU Constants
* @brief PMU<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @{
*/
/************************************************************************************************/
/* <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>λֵ<CEBB><D6B5><EFBFBD><EFBFBD> */
#define PMU_CR3_DEFAULT_VALUE (0x00000000UL) /**< <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƼĴ<C6BC><C4B4><EFBFBD>3<EFBFBD>ĸ<EFBFBD>λֵ */
#define PMU_CLR_FLAG_VALUE (0x00001000UL) /**< <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD>ĸ<EFBFBD>λֵ */
/* PVD<56>ĵ<EFBFBD>ѹ<EFBFBD><D1B9>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ֵ<EFBFBD>йض<D0B9><D8B6><EFBFBD> */
#define PMU_PVD_LEVEL_0 (0x00UL << PMU_CR2_PVD_LEVEL_POS) /**< PVD<56><44>ֵ<EFBFBD>ȼ<EFBFBD>0: 2.1/2.0V<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F>½<EFBFBD><C2BD><EFBFBD> */
#define PMU_PVD_LEVEL_1 (0x01UL << PMU_CR2_PVD_LEVEL_POS) /**< PVD<56><44>ֵ<EFBFBD>ȼ<EFBFBD>1: 2.3/2.2V<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F>½<EFBFBD><C2BD><EFBFBD> */
#define PMU_PVD_LEVEL_2 (0x02UL << PMU_CR2_PVD_LEVEL_POS) /**< PVD<56><44>ֵ<EFBFBD>ȼ<EFBFBD>2: 2.5/2.4V<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F>½<EFBFBD><C2BD><EFBFBD> */
#define PMU_PVD_LEVEL_3 (0x03UL << PMU_CR2_PVD_LEVEL_POS) /**< PVD<56><44>ֵ<EFBFBD>ȼ<EFBFBD>3: 2.6/2.5V<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F>½<EFBFBD><C2BD><EFBFBD> */
#define PMU_PVD_LEVEL_4 (0x04UL << PMU_CR2_PVD_LEVEL_POS) /**< PVD<56><44>ֵ<EFBFBD>ȼ<EFBFBD>4: 2.7/2.6V<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F>½<EFBFBD><C2BD><EFBFBD> */
#define PMU_PVD_LEVEL_5 (0x05UL << PMU_CR2_PVD_LEVEL_POS) /**< PVD<56><44>ֵ<EFBFBD>ȼ<EFBFBD>5: 2.9/2.8V<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F>½<EFBFBD><C2BD><EFBFBD> */
#define PMU_PVD_LEVEL_6 (0x06UL << PMU_CR2_PVD_LEVEL_POS) /**< PVD<56><44>ֵ<EFBFBD>ȼ<EFBFBD>6: 3.0/2.9V<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F>½<EFBFBD><C2BD><EFBFBD> */
#define PMU_PVD_LEVEL_7 (0x07UL << PMU_CR2_PVD_LEVEL_POS) /**< PVD<56><44>ֵ<EFBFBD>ȼ<EFBFBD>7: 3.1/3.0V<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F>½<EFBFBD><C2BD><EFBFBD> */
/* PVD<56>ж<EFBFBD><D0B6><EFBFBD>Ч<EFBFBD>źŶ<C5BA><C5B6><EFBFBD> */
#define PMU_PVD_RISING (PMU_CR2_RT_EN) /**< <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>仯ʱ<E4BBAF><CAB1><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9> */
#define PMU_PVD_FALLING (PMU_CR2_FT_EN) /**< <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD>Ӹ<EFBFBD><D3B8><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>仯ʱ<E4BBAF><CAB1><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9> */
#define PMU_PVD_LOWER_THRESHOLD (PMU_CR2_LT_EN) /**< <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9> */
#define PMU_PVD_HIGHER_THRESHOLD (PMU_CR2_HT_EN) /**< <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9> */
#define PMU_PVD_EDGE_TYPE (PMU_CR2_RT_EN | PMU_CR2_FT_EN | PMU_CR2_LT_EN | PMU_CR2_HT_EN)
/* PVD <20><><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD>ʹ<EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD> */
#define PVD_FILTER_TIME_DISABLE (0x00000000UL)
#define PVD_FILTER_TIME_ENABLE (PMU_CR2_FILTER_EN)
/* PVD <20><><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD>ʱ<EFBFBD><EFBFBD><E4B6A8> */
#define PVD_FILTER_TIME_2PCLK (0x00UL) /**< PVD<56><44><EFBFBD><EFBFBD>ʱ<EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD>ʱ<EFBFBD><CAB1>Ϊ<EFBFBD><CEAA>2*PCLK */
#define PVD_FILTER_TIME_4PCLK (0x01UL) /**< PVD<56><44><EFBFBD><EFBFBD>ʱ<EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD>ʱ<EFBFBD><CAB1>Ϊ<EFBFBD><CEAA>4*PCLK */
#define PVD_FILTER_TIME_8PCLK (0x02UL) /**< PVD<56><44><EFBFBD><EFBFBD>ʱ<EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD>ʱ<EFBFBD><CAB1>Ϊ<EFBFBD><CEAA>8*PCLK */
#define PVD_FILTER_TIME_16PCLK (0x03UL) /**< PVD<56><44><EFBFBD><EFBFBD>ʱ<EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD>ʱ<EFBFBD><CAB1>Ϊ<EFBFBD><CEAA>16*PCLK */
#define PVD_FILTER_TIME_32PCLK (0x04UL) /**< PVD<56><44><EFBFBD><EFBFBD>ʱ<EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD>ʱ<EFBFBD><CAB1>Ϊ<EFBFBD><CEAA>32*PCLK */
#define PVD_FILTER_TIME_64PCLK (0x05UL) /**< PVD<56><44><EFBFBD><EFBFBD>ʱ<EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD>ʱ<EFBFBD><CAB1>Ϊ<EFBFBD><CEAA>64*PCLK */
#define PVD_FILTER_TIME_128PCLK (0x06UL) /**< PVD<56><44><EFBFBD><EFBFBD>ʱ<EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD>ʱ<EFBFBD><CAB1>Ϊ<EFBFBD><CEAA>128*PCLK */
#define PVD_FILTER_TIME_256PCLK (0x07UL) /**< PVD<56><44><EFBFBD><EFBFBD>ʱ<EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD>ʱ<EFBFBD><CAB1>Ϊ<EFBFBD><CEAA>256*PCLK */
/* <20>͹<EFBFBD><CDB9>Ľ<EFBFBD><C4BD>ʽ<EBB7BD><CABD><EFBFBD><EFBFBD> */
#define PMU_ENTRY_LOWPOWER_MODE_WFI (0x00UL) /**< WFI<46><49>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD>͹<EFBFBD><CDB9><EFBFBD>ģʽ */
#define PMU_ENTRY_LOWPOWER_MODE_WFE (0x01UL) /**< WFE<46><45>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD>͹<EFBFBD><CDB9><EFBFBD>ģʽ */
/**
* @}
*/
/*-------------------------------------------functions------------------------------------------*/
/************************************************************************************************/
/**
* @defgroup PMU_External_Functions PMU External Functions
* @brief PMU<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @{
*/
/************************************************************************************************/
/**
* @brief ʹ<EFBFBD><EFBFBD>BGR
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_pmu_bgr_enable(void)
{
PMU->CR1 |= PMU_CR1_BGR_EN;
}
/**
* @brief <EFBFBD><EFBFBD>ֹBGR
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_pmu_bgr_disable(void)
{
PMU->CR1 &= (~PMU_CR1_BGR_EN);
}
/**
* @brief <EFBFBD><EFBFBD>ȡBGR Ready״̬
* @retval bool <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>жϽ<EFBFBD><EFBFBD><EFBFBD>
* @arg true<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾBGR<EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>
* @arg false<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾBGRδ<EFBFBD>ȶ<EFBFBD>
*/
__STATIC_INLINE bool std_pmu_get_bgr_status(void)
{
return ((PMU->SR & (PMU_SR_BGR_READY)) == (PMU_SR_BGR_READY));
}
/**
* @brief ʹ<EFBFBD><EFBFBD>VCORE_AON<EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_pmu_vaon_write_enable(void)
{
PMU->CR1 |= PMU_CR1_VAON_WEN;
}
/**
* @brief <EFBFBD><EFBFBD>ֹVCORE_AON<EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_pmu_vaon_write_disable(void)
{
PMU->CR1 &= (~PMU_CR1_VAON_WEN);
}
/**
* @brief ʹ<EFBFBD><EFBFBD>PVD<EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD>
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Stopģʽǰ<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>ֹPVD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_pmu_pvd_filter_enable(void)
{
PMU->CR2 |= PMU_CR2_FILTER_EN;
}
/**
* @brief <EFBFBD><EFBFBD>ֹPVD<EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_pmu_pvd_filter_disable(void)
{
PMU->CR2 &= (~PMU_CR2_FILTER_EN);
}
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>PVD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD>ʱ<EFBFBD><EFBFBD>
* @param filter_value <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg PVD_FILTER_TIME_2PCLK
* @arg PVD_FILTER_TIME_4PCLK
* @arg ...
* @arg PVD_FILTER_TIME_256PCLK
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_pmu_pvd_filter_config(uint32_t filter_value)
{
MODIFY_REG(PMU->CR2, PMU_CR2_FILTER_TIME, (filter_value << PMU_CR2_FILTER_TIME_POS));
}
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>PVD<EFBFBD><EFBFBD>ֵ<EFBFBD>ȼ<EFBFBD>
* @param pvd_level PVD<EFBFBD><EFBFBD>ֵ<EFBFBD>ȼ<EFBFBD>ѡ<EFBFBD><EFBFBD>
* @arg PMU_PVD_LEVEL_0
* @arg PMU_PVD_LEVEL_1
* @arg ...
* @arg PMU_PVD_LEVEL_7
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_pmu_pvd_level_config(uint32_t pvd_level)
{
MODIFY_REG(PMU->CR2, PMU_CR2_PVD_LEVEL, pvd_level);
}
/**
* @brief ʹ<EFBFBD><EFBFBD>PVD
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_pmu_pvd_enable(void)
{
PMU->CR2 |= PMU_CR2_PVD_EN;
}
/**
* @brief <EFBFBD><EFBFBD>ֹPVD
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_pmu_pvd_disable(void)
{
PMU->CR2 &= (~PMU_CR2_PVD_EN);
}
/**
* @brief <EFBFBD><EFBFBD>ȡPVD״̬<EFBFBD><EFBFBD>־
* @retval bool <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>жϽ<EFBFBD><EFBFBD><EFBFBD>
* @arg true<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>PVD<EFBFBD><EFBFBD>ֵ
* @arg false<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>PVD<EFBFBD><EFBFBD>ֵ
*/
__STATIC_INLINE bool std_pmu_get_pvd_status(void)
{
return ((PMU->SR & (PMU_SR_PVD_STATUS)) == (PMU_SR_PVD_STATUS));
}
/**
* @brief ʹ<EFBFBD><EFBFBD>PVD<EFBFBD>ж<EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_pmu_pvd_interrupt_enable(void)
{
PMU->CR2 |= PMU_CR2_PVD_IE;
}
/**
* @brief <EFBFBD><EFBFBD>ֹPVD<EFBFBD>ж<EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_pmu_pvd_interrupt_disable(void)
{
PMU->CR2 &= (~PMU_CR2_PVD_IE);
}
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>PVD<EFBFBD>ж<EFBFBD>״̬
* @retval bool <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>жϽ<EFBFBD><EFBFBD><EFBFBD>
* @arg true<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾPVD<EFBFBD>ж<EFBFBD>״̬<EFBFBD><EFBFBD>λ
* @arg false<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾPVD<EFBFBD>ж<EFBFBD>״̬δ<EFBFBD><EFBFBD>λ
*/
__STATIC_INLINE bool std_pmu_get_pvd_interrupt_flag(void)
{
return ((PMU->SR & (PMU_SR_PVD_INTF)) == (PMU_SR_PVD_INTF));
}
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>PVD<EFBFBD>жϱ<EFBFBD>־
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_pmu_clear_pvd_interrupt_flag(void)
{
PMU->CLR = PMU_CLR_PVD_INTF_CLR;
}
/**
* @brief ʹ<EFBFBD>ܼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param alarm_mode <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg PMU_PVD_RISING
* @arg PMU_PVD_FALLING
* @arg PMU_PVD_LOWER_THRESHOLD
* @arg PMU_PVD_HIGHER_THRESHOLD
* @arg PMU_PVD_EDGE_TYPE
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_pmu_pvd_alarm_enable(uint32_t alarm_mode)
{
PMU->CR2 |= (alarm_mode);
}
/**
* @brief <EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param alarm_mode <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg PMU_PVD_RISING
* @arg PMU_PVD_FALLING
* @arg PMU_PVD_LOWER_THRESHOLD
* @arg PMU_PVD_HIGHER_THRESHOLD
* @arg PMU_PVD_EDGE_TYPE
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_pmu_pvd_alarm_disable(uint32_t alarm_mode)
{
PMU->CR2 &= (~(alarm_mode));
}
/**
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
* @param flag <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg PMU_PVD_RISING
* @arg PMU_PVD_FALLING
* @arg PMU_PVD_LOWER_THRESHOLD
* @arg PMU_PVD_HIGHER_THRESHOLD
* @arg PMU_PVD_EDGE_TYPE
* @retval bool <EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>־<EFBFBD><EFBFBD>״̬
* @arg true<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD>־Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
* @arg false<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD>־Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
*/
__STATIC_INLINE bool std_pmu_get_pvd_alarm_flag(uint32_t flag)
{
return ((PMU->CR2 &(flag)) == (flag));
}
/**
* @brief ʹ<EFBFBD>ܳ<EFBFBD><EFBFBD>͹<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @note <EFBFBD><EFBFBD>Stop<EFBFBD><EFBFBD>Standbyģʽ<EFBFBD>£<EFBFBD>ʹ<EFBFBD><EFBFBD>PDR/BOR<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>͹<EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_pmu_ultra_lowpower_enable(void)
{
PMU->CR3 |= PMU_CR3_ULP_EN;
}
/**
* @brief <EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD>͹<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_pmu_ultra_lowpower_disable(void)
{
PMU->CR3 &= (~PMU_CR3_ULP_EN);
}
/* PMU<4D>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD> */
void std_pmu_reg_reset(void);
/* PVD<56><44>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
void std_pmu_pvd_init(std_pvd_init_t *pvd_init_param);
void std_pmu_struct_init(std_pvd_init_t *pvd_init_struct);
/* PMU<4D>͹<EFBFBD><CDB9><EFBFBD>ģʽ<C4A3><CABD><EFBFBD>غ<EFBFBD><D8BA><EFBFBD> */
void std_pmu_enter_sleep(uint32_t mode_entry);
void std_pmu_enter_stop(uint32_t mode_entry);
/**
* @}
*/
#ifdef __cplusplus
}
#endif
/**
* @}
*/
/**
* @}
*/
#endif /* CIU32L051_STD_PMU_H */