84 lines
2.2 KiB
C
84 lines
2.2 KiB
C
/*****************************************************************************!
|
||||
|
|
* 技术讨论:QQ群 123763203
|
|||
|
|
* 官网 :www.navota.com
|
|||
|
|
*
|
|||
|
|
* @file pmc.c
|
|||
|
|
* @brief 电源管理模块(PMC)函数库
|
|||
|
|
* @author Navota
|
|||
|
|
* @date 2018-3-1
|
|||
|
|
*****************************************************************************/
|
|||
|
|
|
|||
|
|
#include "common.h"
|
|||
|
|
#include "pmc.h"
|
|||
|
|
|
|||
|
|
/*****************************************************************************//*!
|
|||
|
|
*
|
|||
|
|
* @brief PMC模块初始化函数
|
|||
|
|
*
|
|||
|
|
* @param[in] pPMC_Config PMC 配置结构体.
|
|||
|
|
* @param[in] pPMC PMC
|
|||
|
|
*
|
|||
|
|
* @return none.
|
|||
|
|
*
|
|||
|
|
*****************************************************************************/
|
|||
|
|
void PMC_Init(PMC_Type *pPMC, PMC_ConfigType *pPMC_Config)
|
|||
|
|
{
|
|||
|
|
pPMC->SPMSC1 = pPMC_Config->sCtrlstatus.byte;
|
|||
|
|
pPMC->SPMSC2 = pPMC_Config->sDetectVoltSelect.byte;
|
|||
|
|
if(pPMC_Config->sCtrlstatus.bits.bLvwIrqEn)
|
|||
|
|
NVIC_EnableIRQ(LVD_LVW_IRQn);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*****************************************************************************//*!
|
|||
|
|
*
|
|||
|
|
* @brief 复位PMC模块.
|
|||
|
|
*
|
|||
|
|
* @param[in] pPMC PMC
|
|||
|
|
*
|
|||
|
|
* @return none.
|
|||
|
|
*
|
|||
|
|
*****************************************************************************/
|
|||
|
|
void PMC_DeInit(PMC_Type *pPMC)
|
|||
|
|
{
|
|||
|
|
pPMC->SPMSC1 = 0x1C;
|
|||
|
|
pPMC->SPMSC2 = 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*****************************************************************************//*!
|
|||
|
|
*
|
|||
|
|
* @brief MCU工作模式选择函数
|
|||
|
|
*
|
|||
|
|
* @param[in] u8PmcMode 选择MCU工作模式.
|
|||
|
|
* @param[in] pPMC PMC
|
|||
|
|
*
|
|||
|
|
* @return none.
|
|||
|
|
*
|
|||
|
|
*****************************************************************************/
|
|||
|
|
void PMC_SetMode(PMC_Type *pPMC,uint8_t u8PmcMode)
|
|||
|
|
{
|
|||
|
|
switch(u8PmcMode & 0x3)
|
|||
|
|
{
|
|||
|
|
case PmcModeRun:
|
|||
|
|
break;
|
|||
|
|
case PmcModeWait: //等待模式
|
|||
|
|
wait();
|
|||
|
|
break;
|
|||
|
|
case PmcModeStop4:
|
|||
|
|
/* 停止模式下,使能低压检测*/
|
|||
|
|
pPMC->SPMSC1 |= (PMC_SPMSC1_LVDE_MASK | PMC_SPMSC1_LVDSE_MASK);
|
|||
|
|
stop();
|
|||
|
|
break;
|
|||
|
|
case PmcModeStop3:
|
|||
|
|
/* 在停止模式下,禁用低压检测*/
|
|||
|
|
pPMC->SPMSC1 &= ~(PMC_SPMSC1_LVDE_MASK | PMC_SPMSC1_LVDRE_MASK | PMC_SPMSC1_LVDSE_MASK);
|
|||
|
|
stop();
|
|||
|
|
break;
|
|||
|
|
default:
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|