OpenEdv-开源电子网

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

独立按键松手检测反应慢的问题

[复制链接]

21

主题

96

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
426
金钱
426
注册时间
2014-7-20
在线时间
145 小时
发表于 2016-7-27 00:59:54 | 显示全部楼层 |阅读模式
1金钱
u8 KEY_Scan(u16 GPIO_Pin)
{         
        u32 i=0;
  u8 KEY_OUT = 0;        
        if(GPIO_ReadInputDataBit(PORTB,GPIO_Pin) ==0)
        {
                delay_ms(10); //去抖动
                if(GPIO_ReadInputDataBit(PORTB,GPIO_Pin) ==0)
                        {
                                KEY_OUT = 1;
                                while(GPIO_ReadInputDataBit(PORTB,GPIO_Pin) ==0) //检测按键释放
                                        {
                                                ;;
                                        }
                        }

        }     
        return KEY_OUT;
}



程序这样写的,加上按键释放检测反应很慢,并且按键不灵。去掉按键释放检测反应灵敏,这个是为何呢?

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

使用道具 举报

13

主题

611

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1929
金钱
1929
注册时间
2014-10-6
在线时间
625 小时
发表于 2016-7-27 07:27:45 | 显示全部楼层
在手按下不急时释放,程序会在 while(GPIO_ReadInputDataBit(PORTB,GPIO_Pin) ==0)中死循环,感觉按键按下不灵敏反应慢!
回复

使用道具 举报

6

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2015-12-28
在线时间
30 小时
发表于 2016-7-27 08:06:09 | 显示全部楼层
烟酒不沾 发表于 2016-7-27 07:27
在手按下不急时释放,程序会在 while(GPIO_ReadInputDataBit(PORTB,GPIO_Pin) ==0)中死循环,感觉按键按下 ...

你这是读整个GPIOB呀,你的按键具体是连接到哪个I/O口上
回复

使用道具 举报

2

主题

391

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1957
金钱
1957
注册时间
2014-8-8
在线时间
307 小时
发表于 2016-7-27 08:17:05 | 显示全部楼层
Key_Scan()函数执行间隔多久?应该是在间隔时释放按键再检测就返回没有按键按下了,至于释放检测慢应该和执行间隔有关。
回复

使用道具 举报

21

主题

96

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
426
金钱
426
注册时间
2014-7-20
在线时间
145 小时
 楼主| 发表于 2016-7-27 15:46:59 来自手机 | 显示全部楼层
365mcu 发表于 2016-7-27 08:17
Key_Scan()函数执行间隔多久?应该是在间隔时释放按键再检测就返回没有按键按下了,至于释放检测慢应该和执 ...

程序中只有这个按键程序,没有其他的也慢
回复

使用道具 举报

21

主题

96

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
426
金钱
426
注册时间
2014-7-20
在线时间
145 小时
 楼主| 发表于 2016-7-27 15:49:52 来自手机 | 显示全部楼层
zjm0807 发表于 2016-7-27 08:06
你这是读整个GPIOB呀,你的按键具体是连接到哪个I/O口上

gpio_pin这个参数就是用来对应到哪一个端口的哈
回复

使用道具 举报

2

主题

391

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1957
金钱
1957
注册时间
2014-8-8
在线时间
307 小时
发表于 2016-7-27 16:00:09 | 显示全部楼层
冬天的野狼 发表于 2016-7-27 15:46
程序中只有这个按键程序,没有其他的也慢

慢是你主观感觉,那么你可以断点更一下到底为什么呢?我认为是你这个按键检测机制有问题
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-4 12:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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