OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2315|回复: 3

stm32战舰v3一体按键,一起讨论。

[复制链接]

56

主题

520

帖子

0

精华

高级会员

Rank: 4

积分
964
金钱
964
注册时间
2014-11-18
在线时间
160 小时
发表于 2017-7-13 10:12:33 | 显示全部楼层 |阅读模式
5金钱
本帖最后由 aiyeba 于 2017-7-13 10:19 编辑

   有时候,当单片机的IO 口不够用的时候,想按键这种倒是可以节省一些。 于是一体按键孕育而生。

一体按键,集单按,双击、长按为一体。一个按键三个功能,确实很有实际的使用价值。

我最近用原子哥按键尝试,发现一个很恶心的问题,v3的按键感觉弹起来很慢的感觉。

下面是我写的算法,大家可以改进一下,里面的串口打印只是调试用的。


u8  key0_1ms_EN=0;  //使能开始计数
u8  key0_1ms_cnt=0; //定时器每1ms加1




void Key_Scan(void)
{
    static u8 key_status=0;
    static u8 key_cnt=0;      //确定单击 还是双击
    static u8 key_flag=0;

    switch(key_status)
   {

      case 0:
     {
             if(KEY0==0)
            {
               key0_1ms_EN=1;
               key0_1ms_cnt=0;
               key_ststus=1;
               break;
            }
           if(key_flag==1&&key_cnt==1)
           {
               if(key0_1ms_cnt>800)
              {
                 key_cnt=0;
                 key_flag=0;
                 LED0=0;
                 LED1=1;
              }
           }
     }
     case 1:
     {
            if(KEY0==1)
           {
              key_status=0;
              break;
           }
           if(key0_1ms_cnt>=30&&KEY0==0)
           {
               key_cnt++;
               if(key_cnt>=2)
              {
                key_flag=0;
                key_cnt=0;
                key_status=3;
                LED0=1;
                LED1=1;
                break;
               }
               key_status=2;
           }
           break;
    }
    case 2:
    {
            if(KEY0==1)
            {
               key_flag=1;
               key_status=0;
               break;
            }
            if(key0_1ms_cnt>=2000&&KEY0==0)
            {
                LED0=0;
                LED1=0;
                key_status=3;
            }
            break;
    }
   case 3:
   {
           if(KEY0==1)
          {
             key_flag=0;
             key_cnt=0;
             key_status=0;
          }
         break;
    }
  }
}































最佳答案

查看完整内容[请看2#楼]

已经解决了,效果很得不得了。
自己选择的路,成家前走完。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

56

主题

520

帖子

0

精华

高级会员

Rank: 4

积分
964
金钱
964
注册时间
2014-11-18
在线时间
160 小时
 楼主| 发表于 2017-7-13 10:12:34 | 显示全部楼层
已经解决了,效果很得不得了。
自己选择的路,成家前走完。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165365
金钱
165365
注册时间
2010-12-1
在线时间
2110 小时
发表于 2017-7-13 23:05:10 | 显示全部楼层
弹起来很慢?不会啊,你按键没坏吧?
回复

使用道具 举报

56

主题

520

帖子

0

精华

高级会员

Rank: 4

积分
964
金钱
964
注册时间
2014-11-18
在线时间
160 小时
 楼主| 发表于 2017-7-14 10:44:37 | 显示全部楼层
正点原子 发表于 2017-7-13 23:05
弹起来很慢?不会啊,你按键没坏吧?

三月份,刚刚买的。(在你店里买了2千多了)原子哥有没有做过一体键啊?
自己选择的路,成家前走完。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-1-6 01:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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