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

查看: 2163|回复: 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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版