hejun96 发表于 2020-3-17 09:54:33

mylovemcu 发表于 2020-3-17 09:25
确定是支持同时按键的吗如果支持的话组合键按下会传过来另一个协议比如0xdd这样的那处理方式和单 ...
比如1个按键发出这个协议的长度是28ms,那么做法不应该是当有2个按键按下了,会有两路脉冲输出,持续10s,10s后认为是双键长按。协议发过来,就和上面的图一样,但是会有一个结束的脉冲,比如说这个结束的脉冲是1个ms,如果我一直按下这个按键,那么这个1ms的结束脉冲在示波器上始终不会出现,只有当我松开按键的时候,这个结束脉冲出现了,那么这是单个按键长按的触发。那么双键长按我也是用两个长按的标志位,然后分别计时10s,当这两个标志位同时为1时才进入,但是这两个双键的10s定时器一直没计时。合泰触控BS83B08C支持双键长按

butterflyspring 发表于 2020-3-18 16:56:11

这个触控IC的手册是怎样描述双键按下的协议的,或者是怎样定义的,与单键按下什么区别的:)

hejun96 发表于 2020-3-18 21:17:36

butterflyspring 发表于 2020-3-18 16:56
这个触控IC的手册是怎样描述双键按下的协议的,或者是怎样定义的,与单键按下什么区别的 ...
触控IC并没有对双键按下的协议有过描述,但是触控端有一个宏定义是对多键是否可以同时按下的一个宏,这个宏用来判断触控端是否支持多个按键同时。只是说触控端长按只要对应都能发出持续的电平就认为时可以的,我用示波器测过两个按键按下不松开,每一路脉冲都有协议的起始脉冲和结束脉冲,如果长按按键不松开,一直不会触发1ms的结束脉冲,只有当松开按键的时候,才会出现结束脉冲.双键与单键长按的区别并不在触控,而在STM32F103主控端的标志位,如果一个标志位表示热水键,那么按下后延时10s热水长按标志位置1,冷水按键长按10s,冷水按键的长按标志位置1.双键长按,热水按键+冷水按键同时长按就触发了双键长按的标志位。触控端只需要判断按键按下,结束的1ms脉冲始终都不执行,只有当松开按键,结束的1ms脉冲才执行就可以了,就把这个1ms脉冲看成是触控端的结束标志位。所以问题觉得不在触控

hejun96 发表于 2020-3-27 20:08:50

butterflyspring 发表于 2020-3-18 16:56
这个触控IC的手册是怎样描述双键按下的协议的,或者是怎样定义的,与单键按下什么区别的 ...

版主,现在触控这边的问题解决了,现在在STM32F103主控端有这么一个问题,就是单个按键有长按和短按的功能,长按和短按的功能各不相同,短按的时间不会超过3s,长按的时间需要10s,那么我现在是长按的时候会打开短按的功能,现在不想这样做,也就是说长按的时候不会触发短按,求版主能给一个方法指导吗?

五哥1 发表于 2020-4-1 23:56:40

hejun96 发表于 2020-3-27 20:08
版主,现在触控这边的问题解决了,现在在STM32F103主控端有这么一个问题,就是单个按键有长按和短按的功 ...

这个应该是在中断程序里加上对时间的检测,就可以区分短按或者长按。

hejun96 发表于 2020-4-8 21:11:47

五哥1 发表于 2020-4-1 23:56
这个应该是在中断程序里加上对时间的检测,就可以区分短按或者长按。

如果用定时器的变量在主函数while(1)中的业务代码中区分长按和短按可行吗?

butterflyspring 发表于 2020-4-10 17:04:01

当然,长按键需要计时判断究竟是长按还是短按。不过按键是否有效要以按键释放状态确认后为为有效。所有的判断要有去抖动。如果去抖动由触控IC完成,且时间足够,那么这部分就可以不需要:)

glenxu 发表于 2020-4-14 08:49:08

对于按键自己要有策略,或者明确别人的策略,否则就别琢磨了,先做简单的,等你有了能力再做复杂的,否则就太浪费时间了

likang1202 发表于 2020-4-14 09:45:56

围观
页: 1 [2]
查看完整版本: STM32F1根据触控按键的脉冲解码