PASII/CandeII_1.4/Hardware/key.c

74 lines
1.9 KiB
C

/*****************************************************************
;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;
}
}
}
/*---------------------------------------------------------------*/