STM32学习笔记-单片机按键单击/双击/长按的实现

这篇博客详细介绍了如何在STM32单片机中实现按键的单击、双击和长按检测。通过KEY_Scan1和KEY_Scan函数,结合定时器和计数标志,对按键状态进行判断,从而识别不同的操作模式。文中还提到了关键参数的调整,如定时器周期和按键时间阈值,以适应不同的应用场景。
摘要由CSDN通过智能技术生成

一、KEY_Scan1函数,此处结构直接使用了正点原子资料里面的按键识别函数,稍有改动.

1.添加了定时器清零及定时器内部计数的清零(TH1_Reload与TL1_Reload,Flag3).

2.添加了按键计数标志KEY_Times.

3.return返回方式改为直接赋值给全局变量KEY_Select.

uint8_t KEY_Select=0;//按键选择
uint8_t KEY_Mode=0;  //按键模式

void KEY_Scan1(uint8_t mode)  //mode为0不支持连按 为1支持连按 此处选择0 
{	 
    static uint8_t key_up=1;//按键按松开标志
    if(mode)key_up=1;  //支持连按

    if(key_up&&(GET_PD4!=0||GET_PC3==0||GET_PC4==0))
    {
        Delay_Ms(5);//去抖动 连按模式
        key_up=0;
        TH1=TH1_Reload;
        TL1=TL1_Reload;
        Flag3=0;
        KEY_Times++;//按键次数加一
        if(GET_PD4!=0)     {KEY_Select = KEY1_PRES;}
        else if(GET_PC3==0){KEY_Select = KEY2_PRES;}
        else if(GET_PC4==0){KEY_Select = KEY3_PRES;}
    	
    }
    else if(GET_PD4==0&&GET_PC3!=0&&GET_PC4!=0)
    {
        key_up
  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值