#include "hal_gpio.h"
#include "string.h"
//PE12无效  
/***********************GPIO IN**********************************************/
//PD8  MCU开机信号 低电平触发
//PD9  低输入1  下降沿触发
//PD10 低输入2  下降沿触发
//PC12 低输入3  下降沿触发
//PE1  RTC中断  下降沿触发 

//PD11 高输入1  上升沿触发
//PE0  高输入2  上升沿触发
//PE12 WAKEUP1  上升沿触发
//PE13 WAKEUP2  上升沿触发
//PE14 WAKEUP3  上升沿触发



void batt_power_on(void)
{
		GPIO_SetPins(GPIO_PORT_C,GPIO_PIN_13);
}


void batt_power_off(void)
{
		GPIO_ResetPins(GPIO_PORT_C,GPIO_PIN_13);
}


uint8_t batt_power_status(void)
{
		return GPIO_ReadOutputPins(GPIO_PORT_D,GPIO_PIN_08);
}

 







void gpio_interrupt_init(void)
{
    stc_extint_init_t stcExtIntInit;
    stc_gpio_init_t stcGpioInit;	
	
	
	  /* GPIO config 下降沿触发*/
    (void)GPIO_StructInit(&stcGpioInit);
    stcGpioInit.u16ExtInt = PIN_EXTINT_ON;
    stcGpioInit.u16PullUp = PIN_PU_ON;
    //(void)GPIO_Init(GPIO_PORT_C, GPIO_PIN_12, &stcGpioInit);
		(void)GPIO_Init(GPIO_PORT_D, GPIO_PIN_08|GPIO_PIN_09|GPIO_PIN_10, &stcGpioInit);
		//(void)GPIO_Init(GPIO_PORT_E, GPIO_PIN_01, &stcGpioInit);	
    /* ExtInt config */
    (void)EXTINT_StructInit(&stcExtIntInit);
    stcExtIntInit.u32Filter      = EXTINT_FILTER_ON;
    stcExtIntInit.u32FilterClock = EXTINT_FCLK_DIV8;
    stcExtIntInit.u32Edge = EXTINT_TRIG_FALLING;
    (void)EXTINT_Init(EXTINT_CH01, &stcExtIntInit);
		(void)EXTINT_Init(EXTINT_CH08, &stcExtIntInit);
		(void)EXTINT_Init(EXTINT_CH09, &stcExtIntInit);
    (void)EXTINT_Init(EXTINT_CH10, &stcExtIntInit);
		//(void)EXTINT_Init(EXTINT_CH12, &stcExtIntInit);

		memset(&stcGpioInit,0,sizeof(stcGpioInit));
		/* GPIO config 上升沿触发*/
	  (void)GPIO_StructInit(&stcGpioInit);
    stcGpioInit.u16ExtInt = PIN_EXTINT_ON;
    stcGpioInit.u16PullUp = PIN_PU_OFF;
		(void)GPIO_Init(GPIO_PORT_D, GPIO_PIN_11, &stcGpioInit);
		(void)GPIO_Init(GPIO_PORT_E, GPIO_PIN_00|GPIO_PIN_01|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14, &stcGpioInit);	
    /* ExtInt config */
    (void)EXTINT_StructInit(&stcExtIntInit);
    stcExtIntInit.u32Filter      = EXTINT_FILTER_ON;
    stcExtIntInit.u32FilterClock = EXTINT_FCLK_DIV8;
    stcExtIntInit.u32Edge = EXTINT_TRIG_RISING;
    (void)EXTINT_Init(EXTINT_CH00, &stcExtIntInit);
		(void)EXTINT_Init(EXTINT_CH11, &stcExtIntInit);
		(void)EXTINT_Init(EXTINT_CH12, &stcExtIntInit);
    (void)EXTINT_Init(EXTINT_CH13, &stcExtIntInit);
		(void)EXTINT_Init(EXTINT_CH14, &stcExtIntInit);
	

    /* NVIC config */		
    NVIC_ClearPendingIRQ(EXTINT_PORT_EIRQ0_IRQn);
    NVIC_SetPriority(EXTINT_PORT_EIRQ0_IRQn, DDL_IRQ_PRIO_DEFAULT);
    NVIC_EnableIRQ(EXTINT_PORT_EIRQ0_IRQn);
		
    NVIC_ClearPendingIRQ(EXTINT_PORT_EIRQ1_IRQn);
    NVIC_SetPriority(EXTINT_PORT_EIRQ1_IRQn, DDL_IRQ_PRIO_DEFAULT);
    NVIC_EnableIRQ(EXTINT_PORT_EIRQ1_IRQn);
		
    NVIC_ClearPendingIRQ(EXTINT_PORT_EIRQ8_IRQn);
    NVIC_SetPriority(EXTINT_PORT_EIRQ8_IRQn, DDL_IRQ_PRIO_DEFAULT);
    NVIC_EnableIRQ(EXTINT_PORT_EIRQ8_IRQn);
		
    NVIC_ClearPendingIRQ(EXTINT_PORT_EIRQ9_IRQn);
    NVIC_SetPriority(EXTINT_PORT_EIRQ9_IRQn, DDL_IRQ_PRIO_DEFAULT);
    NVIC_EnableIRQ(EXTINT_PORT_EIRQ9_IRQn);
		
    NVIC_ClearPendingIRQ(EXTINT_PORT_EIRQ10_IRQn);
    NVIC_SetPriority(EXTINT_PORT_EIRQ10_IRQn, DDL_IRQ_PRIO_DEFAULT);
    NVIC_EnableIRQ(EXTINT_PORT_EIRQ10_IRQn);
		
    NVIC_ClearPendingIRQ(EXTINT_PORT_EIRQ11_IRQn);
    NVIC_SetPriority(EXTINT_PORT_EIRQ11_IRQn, DDL_IRQ_PRIO_DEFAULT);
    NVIC_EnableIRQ(EXTINT_PORT_EIRQ11_IRQn);
		
    NVIC_ClearPendingIRQ(EXTINT_PORT_EIRQ12_IRQn);
    NVIC_SetPriority(EXTINT_PORT_EIRQ12_IRQn, DDL_IRQ_PRIO_DEFAULT);
    NVIC_EnableIRQ(EXTINT_PORT_EIRQ12_IRQn);
		
    NVIC_ClearPendingIRQ(EXTINT_PORT_EIRQ13_IRQn);
    NVIC_SetPriority(EXTINT_PORT_EIRQ13_IRQn, DDL_IRQ_PRIO_DEFAULT);
    NVIC_EnableIRQ(EXTINT_PORT_EIRQ13_IRQn);		
		
		NVIC_ClearPendingIRQ(EXTINT_PORT_EIRQ14_IRQn);
    NVIC_SetPriority(EXTINT_PORT_EIRQ14_IRQn, DDL_IRQ_PRIO_DEFAULT);
    NVIC_EnableIRQ(EXTINT_PORT_EIRQ14_IRQn);	
}

void EXTINT00_SWINT16_Handler(void)
{
    if(SET == EXTINT_GetExtIntStatus(EXTINT_CH00)) 
		{
			//printf("EXTINT_CH00 interruput\n");
      EXTINT_ClearExtIntStatus(EXTINT_CH00);
    }
}
void EXTINT01_SWINT17_Handler(void)
{
    if(SET == EXTINT_GetExtIntStatus(EXTINT_CH01)) 
		{
			printf("EXTINT_CH01 interruput\n");
      EXTINT_ClearExtIntStatus(EXTINT_CH01);
    }
}
void EXTINT08_SWINT24_Handler(void)
{
    if(SET == EXTINT_GetExtIntStatus(EXTINT_CH08)) 
		{
			//printf("EXTINT_CH08 interruput\n");
      EXTINT_ClearExtIntStatus(EXTINT_CH08);
    }
}
void EXTINT09_SWINT25_Handler(void)
{
    if(SET == EXTINT_GetExtIntStatus(EXTINT_CH09)) 
		{
			//printf("EXTINT_CH09 interruput\n");
      EXTINT_ClearExtIntStatus(EXTINT_CH09);
    }
}
void EXTINT10_SWINT26_Handler(void)
{
    if(SET == EXTINT_GetExtIntStatus(EXTINT_CH10)) 
		{
			//printf("EXTINT_CH10 interruput\n");
      EXTINT_ClearExtIntStatus(EXTINT_CH10);
    }
}
void EXTINT11_SWINT27_Handler(void)
{
    if(SET == EXTINT_GetExtIntStatus(EXTINT_CH11)) 
		{
			//printf("EXTINT_CH11 interruput\n");
      EXTINT_ClearExtIntStatus(EXTINT_CH11);
    }
}
void EXTINT12_SWINT28_Handler(void)
{
    if(SET == EXTINT_GetExtIntStatus(EXTINT_CH12)) 
		{
			if(PIN_SET == GPIO_ReadInputPins(GPIO_PORT_E, GPIO_PIN_12))
			{
				//printf("EXTINT_CH12--:PE12 interruput\n");
			}
			if(PIN_RESET == GPIO_ReadInputPins(GPIO_PORT_C, GPIO_PIN_12))
			{
				//printf("EXTINT_CH12--:PC12 interruput\n");
			}			
      EXTINT_ClearExtIntStatus(EXTINT_CH12);
    }
}
void EXTINT13_SWINT29_Handler(void)
{
    if(SET == EXTINT_GetExtIntStatus(EXTINT_CH13)) 
		{
			//printf("EXTINT_CH13 interruput\n");
      EXTINT_ClearExtIntStatus(EXTINT_CH13);
    }
}
 
void EXTINT14_SWINT30_Handler(void)
{
    if(SET == EXTINT_GetExtIntStatus(EXTINT_CH14)) 
		{
			//printf("EXTINT_CH14 interruput\n");
 
      EXTINT_ClearExtIntStatus(EXTINT_CH14);
    }
}




 


