先说一下问题产生的背景:
一个产品中,设置了7个按键,按照一一对应的接法
BP2.0~BP2.6分别对应按键 KEY1~KEY7
KEY1---OK (开/关机兼PAUSE/RESUME)
KEY2 ---VOL-
KEY3 --- VOL+
KEY4 --- SETTIME
KEY5 --- 上一首
KEY6 --- 目录切换
KEY7 --- 下一首
程序中设定按键按下即响应,不是按下弹开再响应,目前按键模块测试也比较稳定,用的那种指甲盖大小的方型按键(常开的吧,里面有个弹片),并且我在按键程序中每次先判断键按下的数目,如果有超过1个键按下则对按键不做任何响应,有且只有一个键按下时才做响应。当初这样做是为了按键操作比较清晰明了。
现在问题是:我担心这样按键的寿命不高,在以后的批量生产投入使用后,如果按键出现问题,并且是弹片按下弹不起来的问题,那么在系统看来该键总是处于按下的状态,而又因为程序对按键数目的限制,导致我永远无法响应任何按键。甚至说都无法开机了。
也没有好的方法避免这种问题?
注: 按键按下相应的MCU口接收到低电平;弹开高电平
根绝上述想到的后来我拿我的手机试,也发现如果其中一个键按下(非开机键),我长按开机键是无法开机的。。。
试想一下,如果整机都很好,而恰好某一键损坏(按键里面的弹片无法弹起),那整机不就相当于作废了,开机都开不了。。。
大家可以试一下自己的手机。。。这算不算按键功能的BUG?
“我长按开机键是无法开机的。。。 ”
说错了 ,可以开机但是开机后无法再进行其他操作了。
可以做成一起按就无法使用,也可以做成支持多按,不过要看电路的设计。
每家不同,不可一概而论。
你希望怎么做?
现在电路已经确定,就是一一对应的。
我不需要支持多按。。。
我前面发的问题意思时:考虑到未来因为按键寿命的问题,对于我现在的程序有很大隐患!
现在开发平台是在简单的华邦8位机上,且C都不支持。没有用到操作系统。
所以希望能在现有的程序基础上加上一种判断,自动判断哪些键是死键(即常闭状态),从而在程序中把该键作废,不管其状态;
你如果能限制用户长按一个键,那就可以根据某个键长按超时,来判断该键损坏。
不过估计没人能限制用户按键时间吧?
按键寿命不是做软件来考虑的,而是选料时考虑的,这个需要按键提供商来保证,并且做疲劳测试的。这些都没有吗?
你可以想想自己用手机,一个按键能用到200,000(20W)次以上吗?