STM32中关于检测按键的一些问题(关于采用传统的延时消抖方式和采用中断方式)
来源:互联网 发布:java处理大量数据 编辑:程序博客网 时间:2024/06/05 10:36
1.对比用延时消抖的方式检测按键和用中断的方式检测按键:对于中断检测按键的方式,如果不在程序中做一些再次检测按键是否按下等处理的话,其精度是不如用延时消抖的方式加测按键来的可靠。
2.原因在于:我们在利用中断检测按键时,在中断程序中并没有延时,那么就会存在一个问题,当按下按键时,会可能有多次抖动,尽管我们设置的是下降沿触发中断,但这多次的抖动中也同样可能会有多次下降沿,故就有可能多次触发中断。
3.解决的办法还是只能通过延时,修正后的代码见下图3;而对于《STM32库开发实战指南》 P90 中的代码是会引起误触发的。
图1:传统方式的延时消抖检测按键程序
图2:粗略的延时函数
图3:修正后的利用中断方式检测按键的代码
4.那么问题来了,在中断程序中也使用了延时,那跟传统的延时消抖还有什么区别呢?
区别是:传统的延时消抖程序要写在 main函数 的 while循环 中,不停的检测按键是否按下,白白占用CPU资源;而采用中断的方式,并不会影响其他程序的执行,只有当按键按下时,才会触发中断,进入到中断服务程序中。
0 0
- STM32中关于检测按键的一些问题(关于采用传统的延时消抖方式和采用中断方式)
- TIzstack中关于外部中断中采用轮询方式的bug
- 采用中断方式的数据接收
- 关于STM32发送中断的一些问题
- 关于STM32的延时问题
- stm32按键的检测(EXTI和Polling两种方式)
- GMF关于采用拖动方式创建连线的实例
- 关于兔子问题(斐波那契数)的Java实现--采用面向对象的方式
- 关于采用默认方式处理WM_NCLBUTTONDOWN消息而“无法”产生WM_NCLBUTTONUP消息的问题
- 按键控制蜂鸣器--采用中断方式(3)
- 关于采用hsqldb的一些说明
- STM32串行通讯采用中断方式发送,接收
- STM32的SPI采用DMA方式传输测试
- STM32的串口采用DMA方式发送数据测试
- STM32的串口采用DMA方式接收数据测试
- STM32的串口采用DMA方式接收数据测试
- STM32的串口采用DMA方式发送数据测试
- STM32的串口采用DMA方式接收数据测试
- HTML5 - 表格与列表处理
- Linux平台上C语言实现异步队列的两种方法
- python升级导致yum命令无法使用的解决办法
- OLE、ActiveX 、COM和普通DLL的简单理解
- 设计模式_单例设计模式
- STM32中关于检测按键的一些问题(关于采用传统的延时消抖方式和采用中断方式)
- 中央处理器-第一节 CPU的功能和组成
- 2005年11月 test
- ffmpeg只转封装不转码的代码实现
- Java设计模式之单例模式SingleTon
- HTML5 - 用户注册表单
- https://leetcode.com/problems/spiral-matrix-ii/
- Spring in Tomcat
- 几个地图(高德、百度、Apple、Google)URL API