SY883x_For_Clients_langxun-J8/UsrSrc/key/key.c

131 lines
3.1 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 key.c
* @brief key module
*
*
* @version 1.0
* @date 2022/08/04 15:00:40
* @author Alex Xu
*
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
* All Rights Reserved
*
* History:
* Revision Date Author Desc
* 1.0.0 2022/08/04 Alex build this file
******************************************************************************/
/*_____ I N C L U D E S ____________________________________________________*/
#include "key.h"
#include "system.h"
#include "led.h"
#include "sleep.h"
#include "adc.h"
#include "bat.h"
#include "vox_module.h"
#include "userapp.h"
#if KEY_ENABLE
/******************************************************************************\
Macro definitions
\******************************************************************************/
#define KEY_PRESS_CNT0 5 //按键长按500ms显示长按灯效
#define KEY_PRESS_CNT 50 //按键按下计数5s
/******************************************************************************\
Variables definitions
\******************************************************************************/
bit Key_Press_short_irq = 0;
bit Key_Press_l_irq = 0;
bit Key_Press_ll_irq = 0;
bit Key_Press_ll_irq1 = 0;
bit Key_l_Flag = 0;
//idata KEY_EVENT_E Event_key = 0;
idata uint8_t Key_Press_Debounce = 0;
/******************************************************************************\
Functions definitions
\******************************************************************************/
/*
*******************************************************************************
* void Key_Handler(void)
*
* Description : Key Handler --- 主循环中调用调用周期5ms。其中长按(按键时间大于2s)需要判断抬键动作才触发。
CoverStatus --- 充电仓盖子状态。本函数提供对应Key事件标志位后续应用待定
10ms调用周期
*
* Arguments : NONE
* Returns : NONE
* Notes : NONE
*
*******************************************************************************
*/
void Key_Handler(void)
{
if( !(CHIP_STA0 & 0x02) ) //CHIP_STA0 的bit1为Key的状态值0按下
{
Key_Press_Debounce++;
if( Key_Press_Debounce >= KEY_PRESS_CNT ) //长按5s
{
Key_Press_ll_irq = 1;
Key_Press_Debounce = 0;
}
else
if( Key_Press_Debounce >= KEY_PRESS_CNT0 ) //按键长按500ms显示长按灯效
{
if( !Key_Press_ll_irq1 )
{
Key_Press_ll_irq1 = 1;
LED_On_Flag = 1;
}
}
Key_l_Flag = 1;
#if SLEEP_ENABLE
Enter_Sleep_Cnt_Restart_Flag = 1;
#endif
}
else
{
if( Key_l_Flag )
{
Key_l_Flag = 0;
LED_On_Flag = 1;
if( (Key_Press_Debounce < KEY_PRESS_CNT0) ) //松开按键按下时间小于500ms则识别为短按显示电量
{
Key_Press_short_irq = 1; //短按,显示电量
}
else
if( Key_Press_Debounce < KEY_PRESS_CNT ) //长按不到5s灯效灭。
{
Key_Press_ll_irq1 = 0;
}
}
Key_Press_Debounce = 0;
}
}
#endif