TI中文支持网
TI专业的中文技术问题搜集分享网站

z-stack协议HA协议中,关于按键轮询方式

今天学习了HA协议栈中按键处理流程,先学了轮询方式,只用的是p1.0,s1的按键,学习总结下来有四个问题不太明白,

1、在最后的按键查询HalKeyPoll (void)函数里,我感觉执行不到判断HAL_PUSH_BUTTON1()这个条件里,也就是无法读取我的键值,如图所示。

2、在hal_key.c里有一个HalKeyRead ( void )函数,可以读取s1的键值,但是它在ZD_APP.c文件里的void ZDAppCheckForHoldKey( void )调用,在这里调用的作用是什么?

3、假如我把HalKeyRead ( void )放进HalKeyPoll (void)里来读取s1的按键,不知道是否可以?

4、之前用不带协议的单片机学程序,在轮询模式下都会有一个软件销抖,可是我在HA协议里没有发现这段程序,是不用软件销抖吗?

谢谢TI的技术人员和论坛的大神们回答

VV:

1, 是的

2,这个只是一瞬间的检测

3,可以。

4,中断模式的话,已经有消抖了,建议在产品中使用中断模式。查询模式比较耗电。

void halProcessKeyInterrupt (void){ bool valid=FALSE;

if (HAL_KEY_SW_6_PXIFG & HAL_KEY_SW_6_BIT) /* Interrupt Flag has been set */ { HAL_KEY_SW_6_PXIFG = ~(HAL_KEY_SW_6_BIT); /* Clear Interrupt Flag */ valid = TRUE; }

if (HAL_KEY_JOY_MOVE_PXIFG & HAL_KEY_JOY_MOVE_BIT) /* Interrupt Flag has been set */ { HAL_KEY_JOY_MOVE_PXIFG = ~(HAL_KEY_JOY_MOVE_BIT); /* Clear Interrupt Flag */ valid = TRUE; }

if (valid) { osal_start_timerEx (Hal_TaskID, HAL_KEY_EVENT, HAL_KEY_DEBOUNCE_VALUE); }}

赞(0)
未经允许不得转载:TI中文支持网 » z-stack协议HA协议中,关于按键轮询方式
分享到: 更多 (0)