zigbee按键处理:中断VS查询法解析

需积分: 10 4 下载量 45 浏览量 更新于2024-09-16 收藏 19KB DOCX 举报
"zigbee按键流程之代码跟踪——基于TI的ZSTACK 2007 pro" 在Zigbee通信技术中,处理按键输入是系统交互的重要部分。本资源主要探讨了基于TI ZSTACK 2007 pro的Zigbee设备如何处理按键事件,涉及两种常见方法:中断法和查询法。 中断法: 1. 当按键被按下时,硬件会产生中断,此时会进入对应的按键中断服务程序。 2. 在中断服务程序内部,会调用`osal_start_timerEx()`函数来设置一个定时器,这个定时器触发按键处理程序`Hal_ProcessEvent()`。 3. `Hal_ProcessEvent()`函数负责处理按键事件,读取按键状态并将其传递到应用层。 4. 如果没有按键按下,`Hal_ProcessEvent()`不会被调用,因此不存在持续循环。 查询法: 1. 使用`HalKeyConfig()`函数配置按键,该函数会调用`osal_start_timerEx()`启动定时器。 2. 定时器到期后,`Hal_ProcessEvent()`会被执行,检查按键状态。 3. 如果采用查询法,`Hal_ProcessEvent()`内部会再次调用`osal_start_timerEx()`,形成1毫秒的循环,不断检查按键状态。 4. 这种方法会在每个循环中调用`osal_start_timerEx()`两次,确保按键状态的持续轮询。 共同点: 1. 两种方法都依赖于`osal_start_timerEx()`来设置事件处理,区别在于调用时机和次数。 2. 无论是中断还是查询,都需要设置事件标志,以便操作系统检测到按键事件并调用HAL层的事件处理函数。 具体实现细节: 在Zigbee系统的初始化阶段,`InitBoard()`函数被调用,根据不同的启动级别进行相应的配置。例如,关闭所有中断、熄灭所有LED、进行复位检查等。对于按键处理,它可能涉及到初始化中断服务和设置相关的硬件接口。 Zigbee设备通过中断或查询方式处理按键输入,核心是通过`osal_start_timerEx()`和`Hal_ProcessEvent()`这两个关键函数来实现事件驱动的机制。选择哪种方法取决于应用场景的需求,如实时性、功耗等考虑。中断法适用于对响应时间要求较高的场景,而查询法则更适合低功耗且对实时性要求不那么高的情况。