#include "low_pwr_test.h"
|
#include "adc.h"
|
#include "lcd.h"
|
#include "gpio.h"
|
#include "i2c.h"
|
#include "gprs.h"
|
#include "valve_control.h"
|
#include "power_manage.h"
|
#include "e2p.h"
|
#include "uart.h"
|
#include "spi.h"
|
#include "tim.h"
|
#include "master_slave_inter.h"
|
|
/*********************¾²Ì¬¹¦ºÄÄ¿±êΪ100uAÒÔÄÚ**************************************/
|
|
|
void Key_Awaken_Init(void)
|
{
|
KEY_IO_Init();
|
}
|
void Pulse_Awaken_Init(void)
|
{
|
Pulse_IO_Init();
|
PULSE_OUT_OFF;
|
}
|
|
void Valve_Awaken_Init(void)
|
{
|
Valve_IO_Init();
|
}
|
void Lcd_Awaken_Init(void)
|
{
|
Lcd_IO_Init();
|
}
|
void I2c0_GPIO_Clk_Init(void)
|
{
|
CMU_PERCLK_SetableEx(I2C0CLK, ENABLE);
|
CMU_OPCCR1_I2C0CKE_Setable(ENABLE);
|
}
|
|
void Main2Slave_GPIO_Usart3_Clk_Init(void)
|
{
|
CMU_PERCLK_SetableEx(PADCLK, ENABLE); //PADʱÖÓ£¨GPIO£©Ê¹Äܺ¯Êý
|
CMU_PERCLK_SetableEx(UART3CLK,ENABLE);
|
CMU_PERCLK_SetableEx(DMACLK, ENABLE);
|
AltFunIO(MAIN_TX_PORT, MAIN_TX_PIN, ALTFUN_NORMAL);
|
AltFunIO(MAIN_RX_PORT, MAIN_RX_PIN, ALTFUN_NORMAL);
|
OutputIO(MAIN_TO_SLAVE_PORT,MAIN_TO_SLAVE_PIN,OUT_PUSHPULL);
|
OutputIO(SYNC_PORT,SYNC_PIN,OUT_PUSHPULL);
|
}
|
void InfraRed_Uart0_Clk_Init(void)
|
{
|
CMU_OPCCR1_UART0CKE_Setable(ENABLE);
|
CMU_PERCLK_SetableEx(UART0CLK,ENABLE);
|
CMU_PERCLK_SetableEx(DMACLK, ENABLE);
|
CMU_PERCLK_SetableEx(PADCLK, ENABLE); //PADʱÖÓ£¨GPIO£©Ê¹Äܺ¯Êý
|
AltFunIO(IR_RX_PORT, IR_RX_PIN, ALTFUN_NORMAL); //PF3 UART0 RX
|
AltFunIO(IR_TX_PORT, IR_TX_PIN, ALTFUN_NORMAL); //PF4 UART0 TX
|
}
|
void Gprs_GPIO_Uart5_Clk_Init(void)
|
{
|
CMU_PERCLK_SetableEx(UART5CLK,ENABLE);
|
CMU_PERCLK_SetableEx(DMACLK, ENABLE);
|
AltFunIO(GPRS_TX_PORT, GPRS_TX_PIN, ALTFUN_NORMAL);
|
AltFunIO(GPRS_RX_PORT, GPRS_RX_PIN, ALTFUN_NORMAL);
|
Gprs_IO_Init();
|
}
|
void E2p_GPIO_Clk_Init(void)
|
{
|
E2p_IO_Init();
|
CMU_PERCLK_SetableEx(SPI0CLK,ENABLE);
|
AltFunIO(SPI0_PORT, SPI0_SCK_PIN, ALTFUN_NORMAL); // SCK
|
AltFunIO(SPI0_PORT, SPI0_MISO_PIN, ALTFUN_NORMAL); // MISO
|
AltFunIO(SPI0_PORT, SPI0_MOSI_PIN, ALTFUN_NORMAL); // MOSI
|
}
|
void Lith_Battery_GPIO_Clk_Init(void)
|
{
|
CMU_PERCLK_SetableEx(PADCLK, ENABLE); //PADʱÖÓ£¨GPIO£©Ê¹Äܺ¯Êý
|
AnalogIO(LIT_ADC_PORT,LIT_ADC_PIN);//ADC_IN4
|
OutputIO(LITHIUM_DETECTION_PORT,LITHIUM_DETECTION_PIN,OUT_PUSHPULL);
|
// AnalogIO(LIT_PWR_UNDER_PORT,LIT_PWR_UNDER_PIN);//ADC_5
|
|
}
|
void Alka_Battery_GPIO_Clk_Init(void)
|
{
|
CMU_PERCLK_SetableEx(PADCLK, ENABLE); //PADʱÖÓ£¨GPIO£©Ê¹Äܺ¯Êý
|
AnalogIO(ALK_ADC_PORT,ALK_ADC_PIN);//ADC_IN8
|
// OutputIO(ALKALI_DETECTION_PORT,ALKALI_DETECTION_PIN,OUT_PUSHPULL);
|
}
|
|
void CalMode_BasicTimer_Clk_Init(void)
|
{
|
CMU_PERCLK_SetableEx(BT1CLK, ENABLE);
|
}
|
void ErrorShow_TxtendTimer_Clk_Init(void)
|
{
|
CMU_PERCLK_SetableEx(ET1CLK, ENABLE);
|
}
|
void ValveCtl_BsTimer_Clk_Init(void)
|
{
|
CMU_PERCLK_SetableEx(BSTIMCLK, ENABLE);
|
CMU_OPCCR2_BSTCKE_Setable(ENABLE);
|
}
|
void Botton_LPTimer_Clk_Init(void)
|
{
|
CMU_PERCLK_SetableEx(LPTCLK, ENABLE);
|
CMU_OPCCR2_LPTCKE_Setable(ENABLE);
|
}
|
|
|
|
/*
|
Òý½ÅÉèÖÃΪ¸ß×è̬
|
*/
|
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
|
}
|
|
/*Ô¶´«/·§¿Ø»á²úÉú´óµçÁ÷ʱÐè×ö³öÏàÓ¦ÏÞÖÆ*/
|
uint8_t LargeCurrent_LimitingProcess(void)
|
{
|
uint8_t restult = 0;
|
// GPRS¿ÕÏÐ/ÖØÆôʱ
|
if ((gprs_soft_para_g.gprs_state == GPRS_IDLE) || (gprs_soft_para_g.gprs_state == GPRS_RESTART))
|
restult |= 1;
|
// ·§²»ÔÚ¿ª/¹ØÊ±
|
if((__SYS_STATUS_BYTES_GET(valve_state) != VALVE_CLOSING) && (__SYS_STATUS_BYTES_GET(valve_state) != VALVE_OPENING))
|
restult |= 2;
|
return restult;
|
}
|
|
|
/*
|
·½·¨1£º°´ÊÖ²á˵Ã÷£¬½µµÍϵͳʱÖÓ,ÓÃÓÚ½µµÍ¾²Ì¬¹¦ºÄ¡££¨Ö÷°å02_127£©
|
|
´ð£º²âÊԵã¬ÏµÍ³Ê±ÖÓÓÉ36Mhz->12Mhz£¬¶ÔÓÚ½µµÍ¾²Ì¬¹¦ºÄÎÞЧ£¬¶¯Ì¬Çé¿öδ²â¡£
|
*/
|
/*
|
·½·¨2£º½ûÖ¹ËùÓй¦ÄÜ£¬Ö»¿ªÆôSTOPģʽ1£¬²é¿´¾²Ì¬¹¦ºÄ¡££¨Ö÷°å02_127£©
|
|
´ð£º²âÊԵ㬽ûÖ¹ËùÓй¦ÄÜ£¬Ö»¿ªÆôSTOPģʽ£¬¹¦ºÄ²»½µ·´Éýµ½500uA£¬Õâ½á¹û¿ÉÄÜ
|
ÓëÒý½Å״̬Óйء£
|
*/
|
/*
|
·½·¨3£º°´ÊÖ²á˵Ã÷£¬ÔÚ½øÈëSTOPģʽ3ǰ½ûÓÃADC£¬²é¿´¾²Ì¬¹¦ºÄ¡££¨Ö÷°å02_127£©
|
|
´ð£ºÎޱ仯£¬Õâ¿ÉÄÜ˵Ã÷µ±Ç°ADC±¾À´¾ÍδʹÓ㬿ÉÒÔÔÚADCʹÓúóÔÙ²âÊÔ¡£
|
*/
|
/*
|
·½·¨4£ºÔÚ½øÈëSTOPģʽ3ǰ¹Ø±Õ²»ÐèÒªµÄÍâÉèʱÖÓ£¬²é¿´¾²Ì¬¹¦ºÄ¡££¨Ö÷°å02_127£©
|
|
´ð£ºÎޱ仯¡£
|
*/
|
/*
|
·½·¨5£ºÔÚ½øÈëSTOPģʽ3ǰÉèÖÃËùÓÐÒý½ÅΪģÄâÊäÈ룬²é¿´¾²Ì¬¹¦ºÄ¡££¨Ö÷°å02_127£©
|
|
´ð£ºµçÁ÷ԼΪ130uA¡£µ«ÆÁÄ»×Ô¶¯µãÁÁ£¬¾²âÊÔ²»ÉèÖÃKEY3£¨PC1£©ÎªÄ£ÄâÊäÈë¼´¿ÉϨÃðÆÁÄ»¡£
|
*/
|
/*
|
·½·¨6£ºÔÚ½øÈëSTOPģʽ3ǰÉèÖÃÒý½ÅΪģÄâÊäÈë+¹Ø±Õ²»ÐèÒªµÄÍâÉèʱÖÓ£¬²é¿´¾²Ì¬¹¦ºÄ¡££¨Ö÷°å02_127£©
|
|
´ð£ºÏÈÈ«²¿ÉèÖÃΪģÄâÊäÈëÔٹرÕʱÖÓ£¬¹¦ºÄÎޱ仯¡£
|
ÏȹرÕʱÖÓÔÙÉèÖÃÄ£ÄâÊäÈ룬²»ÄܽøÈëÐÝÃߣ¬¹¦ºÄÔö¼Ó¡£
|
*/
|
/*
|
˵Ã÷1£ºÊÖ²á˵½µµÍÔËÐÐ״̬ÏµĹ¦ºÄ¿É¹Ø±ÕÎÞÐèʹÓõÄÍâÉèʱÖÓ£¬Ö±½Óµ÷ÓÃDeInitº¯ÊýºóÔÙInit£¬
|
ÍâÉ蹦ÄÜʧЧ£¬Ö±½Óµ÷ÓÃCLK_DISABLE£¬ÔËÐй¦ºÄ½µµÍ¡££¨Ö÷°å02_132£©
|
*/
|
/*
|
˵Ã÷2£ºÏȵ÷ÓÃDeInit¹Ø±ÕÍâÉèʱÖÓ+¸Ä±äÒý½Å״̬£¬¾²Ì¬¹¦ºÄÎޱ仯¡££¨Ö÷°å02_132£©
|
*/
|
/*
|
˵Ã÷3£ºKEY1_S2_Pin£¨¶¨ÒåB°´¼ü£©²»ÄÜÉèΪģÄâÊäÈ룬²»È»ÐÝÃßʱ»á½øÈëÒ»´ÎB¼ü»Øµ÷º¯Êý
|
*/
|