不是这样理解,这种方式只是一种扫描按键按下的状态,这个地方分为了三步,如果不是很明白,可以参考一下switch语句,这儿是有去抖动的,去抖动延时的时间,取决于你调用read_key();函数的时间。
我想表达的意思,和您所述一样。
去抖动的延时时间,取决于调用read_key()的时间,所以我说在主程序while里加一个delay。例如抖动时间为20ms,那么delay的时间大于等于20ms,也就相当于每20ms+去调用一次read_key()。
也许我表达的不够严谨,delay()和sleep()我还没太搞清楚。总之,如果是单线程,这里让cpu睡个20ms+;如果是多线程,则每20ms+调度该线程一次就可以了。
去抖动应该是“去抖动逻辑”+“去抖动延时”,两者不可缺一,这样会否更严谨些,多谢指正。