R2UWaterRS485UW500/hardinterface/inc/UWater_key_driver.h

129 lines
4.0 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
******************************************************************************
* @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 */