#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 }