/***************************************************************** ;Project: Light ;MCU: ;Date: ;File: ;Function: ******************************************************************/ #include "key.h" #include "gpio.h" #include "delay.h" #include "config.h" #include "DebugLog.h" /*---------------------------------------------------------------*/ //外部变量调用声明 extern TaskFlagUnion_t tTaskFlag; extern uint8_t Adv_State; /*---------------------------------------------------------------*/ //函数声明 void GPIO_callback(void); /*---------------------------------------------------------------*/ //GPIO初始化 //把不用到的GPIO口配置成上拉输入 void Gpio_Init(void) { PIN_Set_GPIO(0x01FF0F84,PIN_SEL_GPIO); GPIO_Set_Input( 0x01FF0F84,0x01FF0F84); PIN_Pullup_Enable(T_QFN_48,0x01FF0F84); GPIO_Input_Enable(0x01FF0F84); } /*---------------------------------------------------------------*/ //按键初始化 void Key_Init(void) { PIN_Set_GPIO(U32BIT(SHOCK_PIN),PIN_SEL_GPIO); GPIO_Set_Input( U32BIT(SHOCK_PIN),0); //设置为输入 不取反 PIN_Pullup_Enable(T_QFN_48, U32BIT(SHOCK_PIN)); GPIO_Input_Enable(U32BIT(SHOCK_PIN)); io_irq_enable(U32BIT(SHOCK_PIN),GPIO_callback); //初始化充电状态引脚 PIN_Set_GPIO(U32BIT(CHARGE_PIN),PIN_SEL_GPIO); GPIO_Set_Input( U32BIT(CHARGE_PIN),0); //设置为输入 不取反 PIN_Pullup_Disable(T_QFN_48, U32BIT(CHARGE_PIN)); //关闭上拉输入 GPIO_Input_Enable(U32BIT(CHARGE_PIN)); io_irq_disable(U32BIT(CHARGE_PIN)); //关闭IO口中断功能 } /*---------------------------------------------------------------*/ //按键初始化 void GPIO_callback(void) { unsigned int SW; SW=GPIO_IRQ_CTRL->GPIO_INT; if(SW&U32BIT(SHOCK_PIN)) { delay_ms(1); if((GPIO_Pin_Read(U32BIT(SHOCK_PIN)) & U32BIT(SHOCK_PIN))==0) { tTaskFlag.tFlag.shockFlag = 1; } if(Adv_State == 0) //重启广播 { StartAdv(); Adv_State = 1; } } } /*---------------------------------------------------------------*/