标题:
stm32按键单击,双击,长按
[打印本页]
作者:
owlcity4
时间:
2020-7-22 17:17
标题:
stm32按键单击,双击,长按
给arm初学者一个比较实用的多功能按键,实现单击,双击,长按。声明一下:这是我修改的例程。如果写到TIM3时间中断里不太消耗CPU资源。
key.h
#define key_5 GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)
key.c
//在函数之外定义全局变量,这个几个标志位可以被外部程序引用。
u8 key_short;
u8 key_long;
u8 key_double;
void key_set(void)
{
static u16 time=0; //申请一个按键计时器
u8 i=0;
if(key_5==0) //短按,双击,长按(GPIO函数设置为上拉输入即可)
{
while(key_5==0&&time<100) //开始计时
{
time++;delay_ms(10);
}
if(time>=100) //1s
{
key_long=1; //长按
while(!key_5); //阻塞
}
else //单击判断
{
for(i=0;i<10;i++) //计时200ms
{
delay_ms(20);
if(key_5==0)
{
key_double=1; //双击
while(!key_5); //阻塞
}
}
if(key_double==0)
key_short=1; //单击
}
}
else{key_short=0;key_long=0;key_double=0;time=0;}
}
作者:
嘉立创AAA
时间:
2020-7-22 18:36
真心不建议用延时方式来做按键,占资源,甚至功能切换都不灵活
作者:
1025432523
时间:
2020-7-25 08:31
嘉立创AAA 发表于 2020-7-22 18:36
真心不建议用延时方式来做按键,占资源,甚至功能切换都不灵活
慢慢来嘛,先看懂延时的再看定时器的,然后你有定时器的范例吗,分享一下
作者:
塞北江南
时间:
2020-7-25 09:38
定时器的范例坛子里大把
作者:
1025432523
时间:
2020-7-27 11:30
塞北江南 发表于 2020-7-25 09:38
定时器的范例坛子里大把
您好,51的多,stm32的好像不多呢
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1