Files

155 lines
3.7 KiB
C
Raw Permalink Normal View History

#include "key.h"
#include "GPIO.h"
#include "timer.h"
#include "string.h"
#include "pwm_control.h"
KEY_t g_Key;
void Key_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure1; //<2F><EFBFBD><E1B9B9><EFBFBD><EFBFBD>
/***********************************1*******************************************/
GPIO_InitStructure1.Pin = GPIO_Pin_4; //ָ<><D6B8>Ҫ<EFBFBD><D2AA>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>IO 4
GPIO_InitStructure1.Mode = GPIO_PullUp; //ָ<><D6B8>IO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ,GPIO_PullUp
GPIO_Inilize(GPIO_P4,&GPIO_InitStructure1); //<2F><>ʼ<EFBFBD><CABC>
memset(&g_Key, 0, sizeof(g_Key));
}
void Key_ScanTask(void)
{
u8 i;
static u32 update_10ms = 0;
if (systick_1ms - update_10ms > 10)
{
update_10ms = systick_1ms;
for (i = 0; i < KEY_CHN_MAX; i++)
{
switch (g_Key.KEY_STA[i])
{
case KEY_STA_S0:
if ( P44 == KEY_PRESS )
{
if (g_Key.delayCnt[i] < KEY_DELAY_COUNT)
{
g_Key.delayCnt[i]++;
}
else
{
g_Key.KEY_STA[i] = KEY_STA_S1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
g_Key.key_time[i] = 0;
g_Key.delayCnt[i] = 0;
}
}
else
{
g_Key.delayCnt[i] = 0;
g_Key.KEY_STA[i] = KEY_STA_S0;
g_Key.key_val[i] = KEY_VAL_NOT;
}
break;
case KEY_STA_S1:
g_Key.key_time[i] ++;
if ( g_Key.key_time[i] < KEY_DELAY_COUNT_LONG )
{
if ( P44 == KEY_LOOSEN ) //<2F>ɿ<EFBFBD>
{
g_Key.key_val[i] = KEY_VAL_SHORT_PRESS; //<2F>̰<EFBFBD><CCB0>ɿ<EFBFBD>
g_Key.key_time[i] = 0;
g_Key.KEY_STA[i] = KEY_STA_S0;
}
}
else
{
g_Key.KEY_STA[i] = KEY_STA_S2;
g_Key.key_time[i] = 0;
g_Key.key_longPress[i] = KEY_VAL_SINGLE_LONG_PRESS; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
g_Key.key_val[i] = KEY_VAL_CONT_LONG_PRESS; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
break;
case KEY_STA_S2:
g_Key.key_longPress[i] = KEY_VAL_NOT;
if ( P44 == KEY_LOOSEN )
{
g_Key.KEY_STA[i] = KEY_STA_S0;
g_Key.key_val[i] = KEY_VAL_LONG_PRESS_LOOSEN; //<2F><><EFBFBD><EFBFBD><EFBFBD>ɿ<EFBFBD>
}
break;
}
}
}
}
void KEY_TEST(void)
{
u8 flag;
if (g_Key.key_val[KEY_CH1] == KEY_VAL_SHORT_PRESS)
{
g_Key.key_val[KEY_CH1] = KEY_VAL_NOT;
s_pwm.key_value++;
switch (s_pwm.key_value)
{
case 1:
s_pwm.currpwm[0] = 2000ul; //90%<25><><EFBFBD><EFBFBD>
s_pwm.currvalue[0]=0x5A;
break;
case 2:
s_pwm.currpwm[1] = 2000ul;
s_pwm.currvalue[1]=0x5A;
break;
case 3:
s_pwm.currpwm[2] = 2000ul;
s_pwm.currvalue[2]=0x5A;
break;
case 4:
s_pwm.currpwm[3] = 2000ul;
s_pwm.currvalue[3]=0x5A;
break;
case 5:
s_pwm.currpwm[4] = 2000ul;
s_pwm.currvalue[4]=0x5A;
break;
case 6:
s_pwm.currpwm[5] = 2000ul;
s_pwm.currvalue[5]=0x5A;
break;
case 7:
s_pwm.currpwm[6] = 2000ul;
s_pwm.currvalue[6]=0x5A;
break;
case 8:
s_pwm.currpwm[7] = 2000ul;
s_pwm.currvalue[7]=0x5A;
break;
case 9:
s_pwm.currpwm[8] = 2000ul;
s_pwm.currvalue[8]=0x5A;
break;
case 10:
s_pwm.currpwm[9] = 2000ul;
s_pwm.currvalue[9]=0x5A;
break;
case 11:
s_pwm.currpwm[10] = 2000ul;
s_pwm.currvalue[10]=0x5A;
break;
case 12:
s_pwm.currpwm[11] = 2000ul;
s_pwm.currvalue[11]=0x5A;
break;
case 13:
for(flag=0;flag<12;flag++)
{
s_pwm.currpwm[flag] = PWM_MAX_VALUE;
s_pwm.currvalue[flag]=0x00;
}
s_pwm.key_value = 0;
break;
default:
break;
}
}
}