OpenEdv-开源电子网

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

Mini板小例子一个,利用KEY0实现多次按键统计及长按处理

[复制链接]

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-10-29 16:35:06 | 显示全部楼层 |阅读模式

本实验将实现如下功能:
1,短按1次KEY0,LED0亮,LED1灭
2,短按2次KEY0,LED00灭,LED1亮
3,短按3次KEY0,LED0,LED1都灭
4,长按KEY0,LED0,LED1都亮。

代码很简单:
#include "sys.h"
#include "usart.h"  
#include "delay.h" 
#include "led.h"
#include "key.h"   
//Mini STM32开发板范例代码2
//按键输入实验
//正点原子@ALIENTEK
//技术论坛:www.openedv.com  
int main(void)
{         
 u8 t;
 u8 keytimer=0; //按下时间统计
 u8 dbclick=0; //多次按标记
 u8 lclick=0; //长按标记
 
 u8 runt=0;
 Stm32_Clock_Init(9); //系统时钟设置
 delay_init(72);      //延时初始化
 LED_Init();      //初始化与LED连接的硬件接口
 KEY_Init();          //初始化与按键连接的硬件接口
 while(1)
 {
  t=KEY_Scan(1);    //得到键值
     if(t==1)  //KEY0按下
  {        
   keytimer++;
   if(keytimer>40)lclick=1;
   runt=0;
  }else //此时按键已经松开了
  {
   if((lclick==0)&&(keytimer>3)) //短按,至少要80ms
   {
    dbclick++;
   }
   if(runt>30)  //松开连续超过300ms了
   {
    if(dbclick==1)//单按
    {
     LED0=0;//LED0亮
     LED1=1;
    }
    if(dbclick==2)//双按
    {
     LED1=0;//LED1亮
     LED0=1;
    }
    if(dbclick==3)//三次按
    {
     LED1=1;//全灭
     LED0=1;
    }     
    dbclick=0;
   }
   keytimer=0; //按下时间清零
   lclick=0; //长按标志清零
  }
  if(lclick)   //长按处理
  {
   LED0=LED1=0; //两个LED都亮
  }
  runt++;
  delay_ms(10);
 } 
}

 

 

 

 

 

 

 

 

 

 

 


 

ALIENTEK MINISTM32 实验2 按键输入.rar

44.53 KB, 下载次数: 457

我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2013-10-9
在线时间
12 小时
发表于 2013-10-29 16:38:34 | 显示全部楼层
回复【楼主位】正点原子:
---------------------------------
非常感谢!
请问如用于M8系例芯片,要做那些工作?
回复 支持 反对

使用道具 举报

53

主题

608

帖子

0

精华

高级会员

Rank: 4

积分
890
金钱
890
注册时间
2013-3-29
在线时间
18 小时
发表于 2013-10-29 19:07:19 | 显示全部楼层
回复【楼主位】正点原子:
---------------------------------
原子,有心了。
学电子,学音乐!!
回复 支持 反对

使用道具 举报

头像被屏蔽

6168

主题

7036

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
19705
金钱
19705
注册时间
2012-12-27
在线时间
25 小时
发表于 2013-10-29 20:26:35 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2018-4-16
在线时间
17 小时
发表于 2018-7-5 15:43:09 | 显示全部楼层
来学习的,老是做不好长按按键.
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2017-2-24
在线时间
20 小时
发表于 2018-8-15 09:23:47 | 显示全部楼层
最近再弄这一块,学习下
回复 支持 反对

使用道具 举报

20

主题

227

帖子

0

精华

高级会员

Rank: 4

积分
605
金钱
605
注册时间
2017-7-14
在线时间
116 小时
发表于 2018-8-15 09:39:32 | 显示全部楼层
编程思想:300ms没有按键动作则处理按键动作,长按松开时,马上处理动作。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 16:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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