OpenEdv-开源电子网

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

关于连续按的问题

[复制链接]

1

主题

4

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2018-5-18
在线时间
6 小时
发表于 2018-5-20 10:20:28 | 显示全部楼层 |阅读模式
5金钱
在按键控制LED反转中,连续按的时候长按与短按会有什么现象,为什么有的时候LED会反转,有的时候LED不变化,有的时候按键按下LED反转,松开又反转,怎么能实现长按时LED闪烁

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4518
金钱
4518
注册时间
2018-5-11
在线时间
945 小时
发表于 2018-5-20 10:44:31 | 显示全部楼层
这和程序中对按键的处理方式有关,
初级试验项目中,
一般对按键只做简单处理(复杂了会增加初学者学习的难度)
更精细更复杂的按键处理方式要随应用而变化,
是否有效消除抖动, 是否判断按键松开, 是否支持连按等等.
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

12

主题

129

帖子

0

精华

高级会员

Rank: 4

积分
947
金钱
947
注册时间
2018-4-5
在线时间
71 小时
发表于 2018-5-20 11:15:32 | 显示全部楼层
当你按下时,按键接地,是低电平,那么对低电平进行检测(相信前面说的你已经实现过了),那么要让LED在长按时进行闪烁,方法有很多(在程序里面也可以称之为算法),我这里说一种,当你长按时,按键接地,你通过不断检测得到低电平,那么我们可以通过加长检测时长来达到闪烁的目的,举个例子:
Read_Key();//读取按键引脚状态
Read_LED();//读取LED引脚状态
Delay(unsigned int n);//ms延时
Set();//LED引脚置1
Reset();//LED引脚置0
{
    while(1)
    {
        if(0 == Read_Key())
        {
            if(0 == Read_LED())
            {
                Set();
            }else if(1 == Read_LED())
            {
                Reset();
            }
        }
    }
}
保守秘密,守望共济,等价交换,尊重知识,探求真知。
回复

使用道具 举报

12

主题

129

帖子

0

精华

高级会员

Rank: 4

积分
947
金钱
947
注册时间
2018-4-5
在线时间
71 小时
发表于 2018-5-20 11:16:19 | 显示全部楼层
emmmmm,delay(500);加在if(0 == Read_Key())上面,,,忘记打了//
保守秘密,守望共济,等价交换,尊重知识,探求真知。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 10:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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