硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2592|回复: 3
收起左侧

[FreeRTOS] 根据高手指点修改了长按短按识别程序,放到任务中,只有短按能识别,长按还是无法识别,程序如下:

[复制链接]

1

主题

2

回帖

5

积分

新手上路

积分
5
发表于 2020-3-6 13:21:49 | 显示全部楼层 |阅读模式
根据高手指点修改了长按短按识别程序,放到任务中,只有短按能识别,长按还是无法识别,程序如下:

#define const_key_time_short1  20    //短按的按键去抖动延时的时间
#define const_key_time_long1   400     //长按的按键去抖动延时的时间

#define const_key_time_short2  20    //短按的按键去抖动延时的时间
#define const_key_time_long2   400     //长按的按键去抖动延时的时间

void task4_task(void * pvParameters)
{
          static int uiKeyTimeCnt1=0;
          static u8  ucKeyLock1=0;
          static u8  ucShortTouchFlag1=0;

  while(1)        
        {



  if(KEY2==1)//IO是高电平,说明两个按键没有全部被按下,这时要及时清零一些标志位
  {
      ucKeyLock1=0; //按键自锁标志清零
      uiKeyTimeCnt1=0;//按键去抖动延时计数器清零,此行非常巧妙,是我实战中摸索出来的。   
            if(ucShortTouchFlag1==1)  //短按触发标志
          {
             ucShortTouchFlag1=0;
                 K2Sec_1=1;    //触发一号键的短按
          }
  }
  else if(ucKeyLock1==0)//有按键按下,且是第一次被按下
  {
     uiKeyTimeCnt1++; //累加定时中断次数
     if(uiKeyTimeCnt1>const_key_time_short1)
     {
            ucShortTouchFlag1=1;   //激活按键短按的有效标志  
     }

     if(uiKeyTimeCnt1>const_key_time_long1)
     {
            ucShortTouchFlag1=0;  //清除按键短按的有效标志

        uiKeyTimeCnt1=0;
        ucKeyLock1=1;  //自锁按键置位,避免一直触发

        K2Sec_1=2;    //触发1号键的长按

     }

  }


printf("task-2:%d\r\n",K2Sec_1);

           vTaskDelay(100 / portTICK_RATE_MS);  //增加延时节拍函数
        }
}

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106739
QQ
发表于 2020-3-7 09:13:22 | 显示全部楼层
直接移植我们H7-TOOL里面的按键代码吧,比较好移植。

做了长按,短按,双击等支持。

http://www.armbbs.cn/forum.php?m ... &extra=page%3D1
回复

使用道具 举报

1

主题

2

回帖

5

积分

新手上路

积分
5
 楼主| 发表于 2020-3-7 10:52:08 | 显示全部楼层
上面的程序已经很简单了,只想搞清楚是嘛原因,求高手指点,可将程序复制到工程试试
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106739
QQ
发表于 2020-3-7 11:04:53 | 显示全部楼层
wis98 发表于 2020-3-7 10:52
上面的程序已经很简单了,只想搞清楚是嘛原因,求高手指点,可将程序复制到工程试试

看了下,没看懂,让坛友帮你看看

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-3 14:16 , Processed in 0.274614 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表