Topic

FAQ
Login Register
mesh_switch工程中的按键消抖的理解
Jun 29, 2023 18:54

/

A

/A

telink support team:

在key_debounce_filter()中有这样的语句,这个语句是否就是用于判断两次是否相同的消抖操作呢?  这个的理解是否与cur = (pre ^tmp)? last :tmp;这样的语句等效? 因为实在没有理解到这个消抖是具体算法,所以这里咨询。 在这个filter函数中,matrix_differ,key_matrix_same_as_last_cnt两个变量没有看到在工程的其他地方使用,此函数中只是赋值,也没有使用,请问下这两个变量的作用是?

mtrx_cur[i] = ( ~mtrx_last[i] & (mtrx_pre[i] & mtrx_tmp) ) | ( mtrx_last[i] & (mtrx_pre[i] | mtrx_tmp) );


我看了文档,没有找到相关的内容。可以帮解释下吗? 多谢!!


2 replies
TL_Soyo Jun 30, 2023 10:47
0
/A

你好,

  是一个简单的滤波,当前键值和之前做判断,你可以加些打印信息判断处理过程。

youngbo830 [Author] Jun 30, 2023 18:52
0
/A

TL_Soyo

多谢回复。 处理过程我是明白的。就是没理解到消抖这个如何处理的。

在这个filter函数中,matrix_differ,key_matrix_same_as_last_cnt两个变量没有看到在工程的其他地方使用,此函数中只是赋值,也没有使用,请问下这两个变量的作用是?


mtrx_cur[i] = ( ~mtrx_last[i] & (mtrx_pre[i] & mtrx_tmp) ) | ( mtrx_last[i] & (mtrx_pre[i] | mtrx_tmp) );

上面的这个语句可以使用cur = (pre ^tmp)? last :tmp;这条语句直观的来理解吗? 两条语句是等效的吗?