你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 2165|回复: 7

ARM®mbed OS入门开发(三 D)GPIO 之 按键消抖

[复制链接]

61

主题

1071

回帖

17

蝴蝶豆

论坛元老

最后登录
2020-12-9
发表于 2016-10-16 17:01:55 | 显示全部楼层 |阅读模式
本帖最后由 anywill 于 2016-11-9 06:58 编辑

按键防抖是单片机按键应用经常需要处理的问题,之所以要防抖是因为我们在按键的过程中存在抖动,从而造成高低电平变化影响应用程序的效果,
消抖是指消除按键接触时产生的干扰抖动杂脉冲波。
硬件消抖是通过采用外加零件来消除干扰抖动杂脉冲波,通常采用电容滤波、单稳延时电路等等。
软件消抖是通过采用软件程序的方法来达到消除干扰抖动杂脉冲波,最常见的是软件采用延时再次检测的方法来消抖。
补充:
按键按下时的瞬间,它的两片触片不是“理想”地立即接触的,特别是按键开关用了一段时间后,触片有些氧化和老化,
这一点,如果用示波器来观察,就能观察到按键接触时的脉冲变化中附带有许多抖动波。

另,无论采用硬件还是软件方法,消除抖动波只是它主要的功能,它还起到消除干扰的作用。

如下面的未消抖按钮中断代码:
InterruptIn button(PC_13);
DigitalOut led1(D13);
void toggle() {
  led1=!led1;
}
int main() {
    button.rise(&toggle);
}
该代码其实前面已经应用过,如果我们在这里多按几次,你就会发现偶尔工作不正常的情况,这是因为管脚输入有波动,
为此,我们需要延迟判定用户按下的效果,这可以简单地通过Timer来实现,改进后的代码如下,实际测试后会发现效果好很多。
InterruptIn button(PC_13);
DigitalOut led1(D13);
Timer debounce;//消抖定时器
void toggle() {
    if (debounce.read_ms()>10) //消抖延时10ms
                        led1=!led1;
    debounce.reset(); //重置定时器
}
int main() {
    debounce.start();
    button.rise(&toggle);
}



<
回复

使用道具 举报

61

主题

1071

回帖

17

蝴蝶豆

论坛元老

最后登录
2020-12-9
 楼主| 发表于 2016-10-16 17:02:22 | 显示全部楼层
占楼备用
回复 支持 反对

使用道具 举报

0

主题

159

回帖

0

蝴蝶豆

高级会员

最后登录
2017-3-9
发表于 2016-10-16 19:09:17 | 显示全部楼层
本帖最后由 xyx365 于 2016-10-16 19:12 编辑

不错的教程
switch-circuit.png debounce.png


回复 支持 反对

使用道具 举报

61

主题

1071

回帖

17

蝴蝶豆

论坛元老

最后登录
2020-12-9
 楼主| 发表于 2016-10-16 20:35:33 | 显示全部楼层
大概100us?
回复 支持 反对

使用道具 举报

4

主题

484

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-8-12
发表于 2016-10-17 08:09:23 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

4

主题

574

回帖

3

蝴蝶豆

高级会员

最后登录
2020-12-9
发表于 2016-10-17 11:30:35 | 显示全部楼层
很不错,感谢分享。
回复 支持 反对

使用道具 举报

6

主题

446

回帖

0

蝴蝶豆

金牌会员

最后登录
2017-5-24
发表于 2016-10-20 11:51:22 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

23

主题

588

回帖

0

蝴蝶豆

高级会员

最后登录
2018-4-11
发表于 2016-10-23 00:14:30 | 显示全部楼层
感谢谢!!!!!
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版