找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5140|回复: 1
收起左侧

STM8单片机按键 短按 双击 长按源代码

[复制链接]
ID:399458 发表于 2018-10-10 11:52 | 显示全部楼层 |阅读模式
STM8单片机上面实现代码为:

//按键按下去会出现下降沿,设置按键IOGPIOB4所在的外部端口B下降沿触发中断
void exit_init(void)
{
   EXTI_DeInit();
   EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOB,EXTI_SENSITIVITY_FALL_ONLY);
}

//按键按下中断服务程序
INTERRUPT_HANDLER(EXTI_PORTB_IRQHandler, 4)
{
   if(GPIO_ReadInputPin(GPIOB,GPIO_PIN_4)==0)//是按键下降沿
    {
       key_fall_flag = 1;//生成按键按下标志
}
}

//周期1ms的定时器中断服务程序
INTERRUPT_HANDLER(TIM4_UPD_OVF_IRQHandler,23)
{
         if(key_fall_flag==1)//发生按键按下事件
    {
       if(GPIO_ReadInputPin(GPIOB,GPIO_PIN_4)==0)//按键持续按下
       {
           if(key_holdon_ms <= 2000)
           {
                key_holdon_ms++;
           }
           else //按键按下到2000ms就判断长按时间成立,生成长按标志
           {
                key_holdon_ms = 0;
                short_key_flag=0;//清短按键标志
                key_long_down = 1//长按键标志置位
key_fall_flag = 0;//清按键按下标志
           }
       }
       else //按键抬起
       {                        
           if(key_holdon_ms>50)//按下时间大于50ms,生成单击标志
           {
                key_holdon_ms=0;
                short_key_flag=1;
                key_long_down =0;
                key_fall_flag=0;

//距离上次单击时间在100~500ms之间,则认为发生连击事件               
                                     if(keyupCnt>100&& keyupCnt<500)
                                     {
                                               doubleClick= TRUE;
                                               short_key_flag=0;   
                                     }

                                     keyUpFlag= TRUE;//单击抬起按键后,生成按键抬起标志
           }                        
           else  //按键持续时间小于50ms,忽略
           {
                key_holdon_ms=0;
                short_key_flag=0;
                long_key_flag=0;
                key_fall_flag=0;
           }
       }

   }  


if(keyUpFlag)//单击抬起后,启动计数,计数到500ms
                 keyupCnt++;
         if(keyupCnt>500)

                 keyupCnt= 0;
                   keyUpFlag= FALSE;
         }
}



回复

使用道具 举报

ID:398041 发表于 2019-7-1 16:04 | 显示全部楼层
还是没有应用起来
回复

使用道具 举报

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

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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