最近设计的一块电路板打样回来了,于是,我便开始进行硬件调试。在调试到电路板的一个开关机按键的时候,遇到了问题。
问题描述:
开关机按键要实现短按一下开机,长按5秒就关机的功能。我在编写测试程序的时候,短按开关机按键,电路板能正常开机,但是长按5秒,电路板关机功能有问题。有的时候短按一下就关机,有的时候短按不关机,工作一段时间后,再短按一下就关机;有的时候连续按几下就关机。
开关机控制电路如下图。

其中一版程序,如下图所示。

测试结果:开机后,短按几下就关机。
另外一版程序,如下图所示。

测试结果:开机后,短按一下后,隔一段时间再按一下就关机了。
后面,程序又改来改去,改了很多遍,但是效果都差不多。这个问题困扰了我差不多一天时间,最后我只好请教资深的软件工程师。
只见他出马后,直接把我写的那部分检测按键长按5秒关机的代码删掉了,改成以下几行简单的代码。

测试结果:无论我短按多少下,又或是等多久再短按,电路板都不会关机了,只有长按5秒,电路板才关机,功能完全正确。
大道至简,高手出马,果然不同凡响,不仅效率高,而且精简。而我却把逻辑越想越复杂,又是定义标志变量,又是考虑按键如何消抖,又是考虑按键有没有松开,又是考虑什么时候开始计时。结果代码写了一大堆,逻辑绕来绕去,却越来越乱,始终实现不了正确的功能。
END评测中心免费申请

👆长按图片,扫码申请👆
新闻来源:电子工程专辑,文中所述为作者独立观点,不代表icspec立场。更多精彩资讯请下载icspec App。如对本稿件有异议,请联系微信客服specltkj。