/** ****************************************************************************** * @file hc32_key_driver.h * @author (C)2020, Qindao ieslab Co., Ltd * @version V1.0 * @date 2020-7-1 * @brief the function of the entity of system processor ****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __UWater_KEY_DRIVER_H #define __UWater_KEY_DRIVER_H #ifdef __cplusplus extern "C" { #endif #include "ddl.h" #include "type.h" #include "sys_config.h" /* MACRO Define---------------------------------------------------------------*/ #if (HARDWARE_VERSION==0x14)//方壳表 //磁敏按键IO配置 #define KEY_GPIO GpioPortE //HD霍尔按键 #define KEY_PIN GpioPin11 //HD霍尔按键 #define KEY_IRQ PORTC_E_IRQn #define KEY_PRIORITY (IrqLevel3) //触摸按键IO配置 #define TCH_KEY_GPIO GpioPortC //HD触摸按键中断 #define TCH_KEY_PIN GpioPin10 //HD触摸按键 #define TCH_KEY_POWER_GPIO GpioPortF //HD触摸按键电源 #define TCH_KEY_POWER_PIN GpioPin6 //HD触摸按键电源 #define TCH_KEY_IRQ PORTC_E_IRQn #define TCH_KEY_PRIORITY (IrqLevel3) #elif (HARDWARE_VERSION==0x18)//圆壳表 //磁敏按键IO配置 #define KEY_GPIO GpioPortE //HD霍尔按键 #define KEY_PIN GpioPin11 //HD霍尔按键 #define KEY_IRQ PORTC_E_IRQn #define KEY_PRIORITY (IrqLevel3) //触摸按键IO配置 #define TCH_KEY_GPIO GpioPortC //HD触摸按键中断 #define TCH_KEY_PIN GpioPin13 //HD触摸按键 #define TCH_KEY_POWER_GPIO GpioPortF //HD触摸按键电源 #define TCH_KEY_POWER_PIN GpioPin1 //HD触摸按键电源 #define TCH_KEY_IRQ PORTC_E_IRQn #define TCH_KEY_PRIORITY (IrqLevel3) #endif //按键按下 (需要根据硬件设计修改低电平是按下还是高电平是按下) #define KEY_NO_PRESS (u32)1 #define KEY_PRESS (u32)(!KEY_NO_PRESS) //中断边沿 #define KEY_RISING_EDGE 0 #define KEY_FALLING_EDGE (!KEY_RISING_EDGE) //按键类型 #define NONE_KEY 0 #define MEGNET_KEY 1 #define TOUCH_KEY 2 //按键事件 #define NO_EVENT 0x00 //无操作 #define SHORT_PRESS 0x01 //短按事件 #define LONG_PRESS 0x02 //长按事件 #define ERR_PRESS 0x04 //按键异常事件 #define LONGLONG_PRESS 0x08 //长按触发事件 #define SHORT_START 1 //短按起始时间 #define SHORT_END 200 //短按截止时间 #define LONG_INTERVAL 100 //长按MSG间隔时间 #define LONG_END 60 //长按截止时间 60s,测试完成修改为60s //采用间隔 #define KEY_CHECK_TIME 2 //10ms检测一次 //触摸按键每日限制使用次数 #define TCH_PRESS_LIMIT_CNT 30 //状态机状态 #define KEY_M_S0 0 //按键驱动状态机状态号 #define KEY_M_S1 1 //按键驱动状态机状态号 #define KEY_M_S2 2 //按键驱动状态机状态号 #define KEY_M_S3 3 //按键驱动状态机状态号 #define KEY_M_S4 4 //按键驱动状态机状态号 #define KEY_M_S5 5 //按键驱动状态机状态号 #define KEY_M_S6 6 //按键驱动状态机状态号 #define KEY_M_S7 7 //按键驱动状态机状态号 #define KEY_M_S8 8 //按键驱动状态机状态号 #define KEY_M_S9 9 //按键驱动状态机状态号 //外部中断线 #define EXTI0_OPEN 0 //A #define EXTI1_OPEN 0 //B #define EXTI2_OPEN 1 //C #define EXTI3_OPEN 0 //D #define EXTI4_OPEN 1 //E #define EXTI5_OPEN 0 //F /* Function Declare------------------------------------------------------------*/ void KeyInit(void); //按键初始化 u8 KeyIfIdle(void); //按键是否空闲 void KeyMachineDriver(void); //按键主状态机 u8 KeyCheckMsg(void); //检测按键消息 void KeyClearMsg(u8 msg); //清除按键消息 u8 KeyIfSleep(void); //按键是否允许休眠 void KeyPreSleep(void); //按键休眠前接口 void KeyWakeSleep(void); //按键唤醒接口 u8 TchKey_GetPressLimitState(void); #ifdef __cplusplus } #endif #endif /* __UWater_KEY_DRIVER_H */