forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-06-06 b39a40b0191e0a8b155db74e885ff66e17b91896
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#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    
}