204 lines
2.9 KiB
C
204 lines
2.9 KiB
C
#include "key.h"
|
||
#include "app.h"
|
||
|
||
unsigned char key_i = 0;
|
||
unsigned int key_cnt[3] = {0}; //延时用计数
|
||
unsigned char key_msg[3] = {0}; //按键事件
|
||
unsigned char key_val[3] = {0}; //按键值
|
||
|
||
#define KEY_CNT 5
|
||
|
||
void Key_Scan(void) // 扫描K1-K3的状态
|
||
{
|
||
key_val[0] = HAL_GPIO_ReadPin(KEY1_GPIO_Port, KEY1_Pin);
|
||
key_val[1] = HAL_GPIO_ReadPin(KEY2_GPIO_Port, KEY2_Pin);
|
||
key_val[2] = HAL_GPIO_ReadPin(KEY3_GPIO_Port, KEY3_Pin);
|
||
|
||
//检测按键
|
||
if(key_i >= 3) key_i = 0;
|
||
if(key_val[key_i] == 0 && key_msg[key_i] == 0) //按键按下
|
||
{
|
||
|
||
key_cnt[key_i]++;
|
||
if(key_cnt[key_i] > KEY_CNT)
|
||
{
|
||
key_cnt[key_i] = 0;
|
||
key_msg[key_i] = 1; //按键按下,触发事件1
|
||
}
|
||
}
|
||
|
||
if( key_msg[key_i] == 2 && key_val[key_i] == 1 )
|
||
{
|
||
key_msg[key_i] = 0; //完成对应功能后,再清空事件
|
||
}
|
||
|
||
//按键按顺序增加
|
||
key_i++;
|
||
if(key_i >= 3) key_i = 0;
|
||
}
|
||
|
||
void msg_clr()
|
||
{
|
||
key_msg[0] = 0;
|
||
key_msg[1] = 0;
|
||
key_msg[2] = 0;
|
||
}
|
||
//按键功能
|
||
|
||
void key_act(void)
|
||
{
|
||
if(key_msg[0] == 1) //K1完成按下后
|
||
{
|
||
oled_en = 1;
|
||
|
||
key_msg[0] = 2;
|
||
}
|
||
|
||
if(key_msg[1] == 1) //K2完成按下后
|
||
{
|
||
switch(oled_p)
|
||
{
|
||
case 2: //菜单选择
|
||
{
|
||
if( oled_s[0] < 2 )
|
||
{
|
||
oled_s[0]++;
|
||
}else
|
||
{
|
||
oled_s[0] = 0;
|
||
}
|
||
}
|
||
break;
|
||
case 4: //运行模式切换
|
||
{
|
||
run_mode_temp[0] = !run_mode_temp[0];
|
||
}
|
||
break;
|
||
case 5: //运行步长调节
|
||
{
|
||
if(step_temp[0] > 1)
|
||
{
|
||
step_temp[0]--;
|
||
}else
|
||
{
|
||
step_temp[0] = 15;
|
||
}
|
||
}
|
||
break;
|
||
case 6: //Cancel & OK 切换
|
||
{
|
||
oled_s_p6[0] = !oled_s_p6[0];
|
||
}
|
||
break;
|
||
case 8:
|
||
{
|
||
if(smp_intr_temp[0] > 5)
|
||
{
|
||
smp_intr_temp[0]--;
|
||
}else
|
||
{
|
||
smp_intr_temp[0] = 10;
|
||
}
|
||
}
|
||
break;
|
||
case 9:
|
||
{
|
||
if(smp_dpth_temp[0] > 10)
|
||
{
|
||
smp_dpth_temp[0]--;
|
||
}else
|
||
{
|
||
smp_dpth_temp[0] = 20;
|
||
}
|
||
}
|
||
break;
|
||
case 10:
|
||
{
|
||
oled_s_p10[0] = !oled_s_p10[0];
|
||
}
|
||
break;
|
||
}
|
||
|
||
|
||
key_msg[1] = 2;
|
||
}
|
||
|
||
if(key_msg[2] == 1)//K3完成按下后
|
||
{
|
||
|
||
switch(oled_p)
|
||
{
|
||
case 2: //菜单选择
|
||
{
|
||
if( oled_s[0] > 0 )
|
||
{
|
||
oled_s[0]--;
|
||
}else
|
||
{
|
||
oled_s[0] = 2;
|
||
}
|
||
}
|
||
break;
|
||
case 4: //运行模式切换
|
||
{
|
||
run_mode_temp[0] = !run_mode_temp[0];
|
||
}
|
||
break;
|
||
case 5: //运行步长调节
|
||
{
|
||
if(step_temp[0] < 15)
|
||
{
|
||
step_temp[0]++;
|
||
}else
|
||
{
|
||
step_temp[0] = 1;
|
||
}
|
||
}
|
||
break;
|
||
case 6: //Cancel & OK 切换
|
||
{
|
||
oled_s_p6[0] = !oled_s_p6[0];
|
||
}
|
||
break;
|
||
case 8:
|
||
{
|
||
if(smp_intr_temp[0] <10 )
|
||
{
|
||
smp_intr_temp[0]++;
|
||
}else
|
||
{
|
||
smp_intr_temp[0] = 5;
|
||
}
|
||
}
|
||
break;
|
||
case 9:
|
||
{
|
||
if(smp_dpth_temp[0] < 20)
|
||
{
|
||
smp_dpth_temp[0]++;
|
||
}else
|
||
{
|
||
smp_dpth_temp[0] = 10;
|
||
}
|
||
}
|
||
break;
|
||
case 10:
|
||
{
|
||
oled_s_p10[0] = !oled_s_p10[0];
|
||
}
|
||
break;
|
||
}
|
||
|
||
|
||
key_msg[2] = 2;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|