cc19950228 发表于 2016-1-12 14:05:01

请问“将状态机检测按键放在主函数里的用法”正确吗?

今天看到一种用状态机检测按键的方法,框图如下:
但是在底下的示例程序里面,将这个函数放在了while(1)里面,while(1)里面虽然还有别的程序,但中间也没有任何延时。所以感觉将这样的状态机放在主函数里面并没有起到去除抖动的作用呀。不知道这样的做法是否正确,还是我理解有问题?
我觉得如果把这样的函数放在定时器里面,大概10ms执行一次,再加一个确认抖动的状态,这样的做法才能起到去除抖动的作用。
求各位前辈指教。

cc19950228 发表于 2016-1-12 14:07:40

程序和解释在这本书里面的234页。
感觉这本书挺不错的,也拿出来分享下。

miaoguoqiang 发表于 2016-1-12 14:36:00

定时调用

河图洛书 发表于 2016-1-12 16:49:55

楼主可以参考下这个帖子
http://www.amobbs.com/forum.php?mod=viewthread&tid=5635315&extra=page%3D2%26filter%3Dauthor%26orderby%3Ddateline&_dsign=fdc456c8

zcllom 发表于 2016-1-12 16:54:25

所以要统计所有任务的时间开销,用计数的方式执行按键检测。

avr_sz 发表于 2016-1-12 18:53:42

“所以感觉将这样的状态机放在主函数里面并没有起到去除抖动的作用呀”--- 是的,没有去除抖动

另外你这里按键确认后,怎么马上转按键释放了?需要检测到按键真正放开才转

zhaoxukiller 发表于 2016-5-23 20:14:45

这个没问题,这个状态机虽然在main函数里,但是是靠定时器调用的,非常合理
页: [1]
查看完整版本: 请问“将状态机检测按键放在主函数里的用法”正确吗?