2025-04-26 16:03:23 +08:00

116 lines
3.7 KiB
C

/** ##########################################################################
** Filename : keyboard_drive.h
** Project : RGB LED
** Module :
** Processor : Cypress CY8C4147AZI-S475
** Version : V1.0
** Compiler : PSoC Creator 4.2
** Date/Time : 2019/10/08
** Abstract :
**
** Contents :
**
**
** (c) Copyright dmdz Co.,Ltd
** --------------------------------------------------------------------------
** R E V I S I O N H I S T O R Y
** --------------------------------------------------------------------------
** Date Ver Author Description
** --------- ---- ----------------- --------------------------------------
** #########################################################################*/
#ifndef _KEY_ADC_MID_H_
#define _KEY_ADC_MID_H_
/*****************************************************************************
* I N C L U D E F I L E S
*****************************************************************************/
#include "key_adc_mid_cfg.h"
#include "key_adc_driver.h"
/*****************************************************************************
* D E F I N E S
*****************************************************************************/
typedef enum
{
KEY_ADC_MID_DIFF_NULL =0u,
KEY_ADC_MID_DIFF_SURE ,
}key_adc_mid_driver_diff_e;
/*****************************************************************************
* M A C R O S
*****************************************************************************/
/*****************************************************************************
* T Y P E D E F I N I T I O N S
*****************************************************************************/
/*****************************************************************************
* S T A T I C V A R I A B L E S
*****************************************************************************/
typedef struct
{
u8 event;
#ifndef RAM_OPTIMIZE_EN
key_adc_result_e state;
key_adc_result_e pre_state;
u8 state_change;
u8 sub_state;
#else
u8 state_change:1;
u8 sub_state:1;
key_adc_result_e state:3;
key_adc_result_e pre_state:3;
#endif
u16 count;
#ifdef KEY_ADC_MID_DEBUG_STATE
u8 result;
#endif
}key_adc_mid_ele_s;
typedef struct
{
key_adc_mid_ele_s key[KEY_ADC_ID_MAX];
#ifndef RAM_OPTIMIZE_EN //只有在休眠喚醒,快速掃描才有用
u16 channel[KEY_ADC_CHANNEL_TOTALS];
#endif
}key_adc_mid_s;
//
/*****************************************************************************
* G L O B A L V A R I A B L E S
*****************************************************************************/
/*****************************************************************************
* C O N S T A N T S
*****************************************************************************/
/*****************************************************************************
* F U N C T I O N P R O T O T Y P E
*****************************************************************************/
void key_adc_mid_init(void); //按键初始化
void key_adc_mid_task(void); //按键任务周期调用
key_adc_result_e key_adc_mid_get_result(u8 key_id);
u8 key_adc_mid_driver_get_change(u8 id);
u8 key_adc_judge_valid(void);
u8 key_adc_judge_wake(void);
u8 key_adc_judge_pre_wake(void);
void key_adc_clear_result(void);
void key_adc_mid_quick_task(void);
//u16 key_adc_mid_get_org_adc(u8 key_id);
key_adc_mid_driver_diff_e key_adc_mid_judge_diff_wakeup(void);
key_adc_mid_driver_diff_e key_adc_mid_judge_state_wakeup(void);
key_adc_result_e key_adc_mid_get_drv_state(u8 key_id);
void key_adc_mid_goto_sleep(void);
void key_adc_mid_goto_wakeup(void);
u8 key_adc_mid_driver_get_event(u8 id);
#endif /*_KEYBOARD_DRIVE_H_*/
/* [] END OF FILE */