历史上的今天
今天是:2025年01月14日(星期二)
2019年01月14日 | STM32中关于检测按键的一些问题
2019-01-14 来源:eefocus
1.对比用延时消抖的方式检测按键和用中断的方式检测按键:对于中断检测按键的方式,如果不在程序中做一些再次检测按键是否按下等处理的话,其精度是不如用延时消抖的方式加测按键来的可靠。
2.原因在于:我们在利用中断检测按键时,在中断程序中并没有延时,那么就会存在一个问题,当按下按键时,会可能有多次抖动,尽管我们设置的是下降沿触发中断,但这多次的抖动中也同样可能会有多次下降沿,故就有可能多次触发中断。
3.解决的办法还是只能通过延时,修正后的代码见下图3;而对于《STM32库开发实战指南》 P90 中的代码是会引起误触发的。

图1:传统方式的延时消抖检测按键程序

图2:粗略的延时函数

图3:修正后的利用中断方式检测按键的代码
4.那么问题来了,在中断程序中也使用了延时,那跟传统的延时消抖还有什么区别呢?
区别是:传统的延时消抖程序要写在 main函数 的 while循环 中,不停的检测按键是否按下,白白占用CPU资源;而采用中断的方式,并不会影响其他程序的执行,只有当按键按下时,才会触发中断,进入到中断服务程序中。
上一篇:STM32 软件按键消抖
史海拾趣
|
代码如下 void test(){ wstring wstr=L\"\"; } 复制代码 注释掉这个函数,全部正确(0错误0警告),取消注释,链接错误 正在编译... wince demo.cpp 正在链接... wince demo.obj : error LNK2019: 无法解析的外部符号 \"public: ...… 查看全部问答> |
|
现在在做一个东西,但是手头的montavista系统带的文件系统下没有dhcp client。所以想要把一个pc机上的源码编译后用到我们的系统上。 请问这个东西要怎么做?是否有哪位高人做过这个东西,可以指点一下啊。 已经编译了dhcp client,不知还要改哪 ...… 查看全部问答> |
|
请问wince环境下如何通过gprs远程无线与exchange服务器同步? windowsmobile下手机上有个内置的activesync客户端一直在运行的,wince下不知道有没有这个东西,如果有,使用方式和wm下是一样的吗?谢谢… 查看全部问答> |
|
利用CCSV5.1自带的430ware的强大资源库学习MSP430 本人为在校大学生,以前一直用的是51.八月初的时候被老师拉过来参加“TI杯”模拟电子专题邀请赛,这才接触到了MSP430。学校发了三块开发板,一块launchpad、一块MSP430FR5739、一块是MSP430F5529。这些板子用着感觉都挺好的,只可惜赛后都被收回去 ...… 查看全部问答> |
|
想收一张STM32F429Discovery(已就购入,请勿跟帖) 希望坛友可以好心出一片给我,其实我想直接去x宝买。或者rs买,但是价格有点小贵,如果能有130-150左右包邮就好了。… 查看全部问答> |




