fix:修复调光时间BUG
解决调光时间一样的情况下,调光亮与调光灭的实际调光时间不一致问题
This commit is contained in:
155
key.c
Normal file
155
key.c
Normal file
@@ -0,0 +1,155 @@
|
||||
#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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user