#include "sys_sleep.h"
|
#include "main.h"
|
|
|
|
|
|
/*
|
Òý½ÅÉèÖÃΪ¸ß×è̬
|
*/
|
void MX_GPIO_CLK_DeInit(void)
|
{
|
/*ÒÔÏÂÊÇһЩOUTPUT_PP»òINPUTºÍ·ÇÍâÉ踴Ó÷ÇÍⲿÖжϵÄÒý½Å*/
|
// CloseIO(GPIOG,GPIO_Pin_8 | GPIO_Pin_9 | PULSE_OUT_PIN | GPIO_Pin_2 | GPIO_Pin_3);
|
// CloseIO(GPIOF,LIT_PWR_UNDER_PIN | SPI0_MOSI_PIN | SPI0_MISO_PIN | SPI0_SCK_PIN | E2P_PWR_PIN | IR_RX_PIN | IR_TX_PIN);
|
// CloseIO(GPIOE,E2P_CS1_PIN | E2P_CS2_PIN | VALVE_CMD_A_PIN | VALVE_CMD_B_PIN | VALVE_CMD_C_PIN);
|
// CloseIO(GPIOD,LIT_ADC_PIN | LITHIUM_DETECTION_PIN | KEYB_S2_PIN);
|
// CloseIO(GPIOC,MAIN_TO_SLAVE_PIN | SLAVE_TO_MAIN_PIN | SYNC_PIN | MAIN_TX_PIN | MAIN_RX_PIN);
|
// CloseIO(GPIOB,ALK_ADC_PIN | ALKALI_DETECTION_PIN | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11);
|
// CloseIO(GPIOA,KEYC_S3_PIN | VALVE_FORCED_OPEN_PIN | GPRS_RE_PIN | GPRS_SWITCH_PIN | GPRS_PWR_PIN | GPRS_TX_PIN | GPRS_RX_PIN);
|
|
/************************ÒÔÏÂÊÇһЩϵͳÍâÉ踴Óò¿·Ö(°üº¬Ê±ÖÓ)******************************/
|
/************************ÒÔÏÂÊÇʱÖÓ²¿·Ö£¨½µµÍÔËÐÐʱµÄ¹¦ºÄ£©************************/
|
// // UART0(Infrared)
|
#ifdef RS232_PRINTF
|
#else
|
CMU_OPCCR1_UART0CKE_Setable(DISABLE);
|
CMU_PERCLK_SetableEx(UART0CLK,DISABLE);
|
#endif
|
// UART3(MAIN_TO_SLAVE)
|
CMU_PERCLK_SetableEx(UART3CLK,DISABLE);
|
// UART5(Gprs)
|
CMU_PERCLK_SetableEx(UART5CLK,DISABLE);
|
// DMA
|
CMU_PERCLK_SetableEx(DMACLK, DISABLE);
|
// SPI0(E2P)
|
CMU_PERCLK_SetableEx(SPI0CLK,DISABLE);
|
// I2C0(LCD)
|
CMU_PERCLK_SetableEx(I2C0CLK, DISABLE);
|
CMU_OPCCR1_I2C0CKE_Setable(DISABLE);
|
// ADC
|
VRTC_ADCCR_CKE_Setable(DISABLE);
|
// BasicTimer(ÓÃÓڼ춨ģʽϵÄÖÜÆÚ½ÚÅÄ)£¨ÉϵçÖÜÆÚµç³Ø¼ì²â£©
|
CMU_PERCLK_SetableEx(BT1CLK, DISABLE);
|
CMU_PERCLK_SetableEx(BT2CLK, DISABLE);
|
// TxtendTimer(ÓÃÓÚ°´¼üÆô¶¯Ä³¹¦ÄÜʧ°ÜµÄ³ÖÐøÏÔʾʱ¼ä£¬È磺Çл»Ä£Ê½£¬Ô¶´«Éϱ¨µÈ)
|
CMU_PERCLK_SetableEx(ET1CLK, DISABLE);
|
// BsTimer(ÓÃÓÚ¿ª/¹Ø·§Ê±¼ä)
|
CMU_PERCLK_SetableEx(BSTIMCLK, DISABLE);
|
CMU_OPCCR2_BSTCKE_Setable(DISABLE);
|
// LowPowerTimer(ÓÃÓÚ°´¼ü¿ò¼ÜµÄÖÜÆÚɨÃè)
|
CMU_PERCLK_SetableEx(LPTCLK, DISABLE);
|
CMU_OPCCR2_LPTCKE_Setable(DISABLE);
|
}
|
|
|
|
|
|
|
|
void DeepSleepMode(void)
|
{
|
#ifdef STOP_MODE
|
MX_GPIO_CLK_DeInit();
|
|
LPTIM_CR_EN_Setable(DISABLE);
|
|
PMU_SleepCfg_InitTypeDef SleepCfg_InitStruct;
|
CDIF_CR_INTF_EN_Setable(ENABLE);
|
/*ϵ縴λÅäÖÃ*/
|
//pdrºÍborÁ½¸öϵ縴λÖÁÉÙÒª´ò¿ªÒ»¸ö
|
//µ±µçÔ´µçѹµÍÓÚϵ縴λʱ£¬Ð¾Æ¬»á±»¸´Î»×¡
|
//pdrµçѹµµÎ»²»×¼µ«Êǹ¦ºÄ¼«µÍ(¼¸ºõÎÞ²âÁ¿£©
|
//borµçѹµµÎ»×¼È·µ«ÊÇÐèÒªÔö¼Ó2uA¹¦ºÄ
|
RMU_PDRCR_PDREN_Setable(ENABLE); //´ò¿ªPDR
|
RMU_PDRCR_PDRCFG_Set(RMU_PDRCR_PDRCFG_1P5V);//pdrµçѹµ÷Õûµ½1.4V
|
RMU_BORCR_OFF_BOR_Setable(ENABLE); //¹Ø±ÕBOR
|
VRTC_RCMFCR_EN_Setable(DISABLE);//RCMF¹Ø±Õ
|
//VRTC_RCLPCR_RCLP_OFF_Setable(ENABLE);//RCLP¹Ø±Õ
|
|
CDIF_CR_INTF_EN_Setable(DISABLE);
|
|
SleepCfg_InitStruct.PMOD = PMU_CR_PMOD_SLEEP; //¹¦ºÄģʽÅäÖÃ
|
SleepCfg_InitStruct.SLPDP = PMU_CR_SLPDP_DEEPSLEEP; //deepsleep
|
SleepCfg_InitStruct.CVS = DISABLE; //Äں˵çѹ½µµÍ¿ØÖÆ
|
SleepCfg_InitStruct.SCR = 0; //M0ϵͳ¿ØÖƼĴæÆ÷£¬Ò»°ãÅäÖÃΪ0¼´¿É
|
SleepCfg_InitStruct.TIA = PMU_WKTR_T1A_8US;//¿É±à³Ì¶îÍ⻽ÐÑÑÓ³Ù8us
|
|
PMU_SleepCfg_Init(&SleepCfg_InitStruct);//ÐÝÃßÅäÖÃ
|
|
IWDT_Clr();
|
IWDT_Init();
|
__WFI();//½øÈëÐÝÃß
|
IWDT_Clr();
|
RMU_BORCR_OFF_BOR_Setable(DISABLE); //¹Ø±ÕBOR
|
#endif
|
}
|