408 lines
12 KiB
C
408 lines
12 KiB
C
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @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 */
|
|||
|
|