微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > 请问cc2541怎样区分长短按键?

请问cc2541怎样区分长短按键?

时间:12-23 整理:3721RD 点击:

我使用simplePeripheral工程作为我的工程基础,想区分长短按键,该怎么区分?

Hi,

当按键被按下的时候, 会产生一个中断, 收到这个中断以后, 代码会把按键的中断关闭, 然后对这个按键的状态做poll(轮询). 如果状态一直没变, 就一直轮询.

当轮询到按键被释放, 状态改变, 就会再次把这个按键的中断打开, 以等待下次按键按下.

请参考hal_key.c里面的HalKeyPoll(), 以及OnBoard.c里面的OnBoard_KeyCallback().

前者做状态轮询, 后者根据按键状态进行中断开关.

你可以根据需要在这两个地方加点东西, 比如计数之类, 来判断按键按下的时间长短.

你好,请问蓝牙协议栈中为什么要加入这段程序呢?(zigbee协议栈中却没有这一段)

 /* If any key is currently pressed down and interrupt
     is still enabled, disable interrupt and switch to polling */
  if( keys != 0 )
  {
    if( OnboardKeyIntEnable == HAL_KEY_INTERRUPT_ENABLE )
    {
      OnboardKeyIntEnable = HAL_KEY_INTERRUPT_DISABLE;
      HalKeyConfig( OnboardKeyIntEnable, OnBoard_KeyCallback);
    }
  }
  /* If no key is currently pressed down and interrupt
     is disabled, enable interrupt and turn off polling */
  else
  {
    if( OnboardKeyIntEnable == HAL_KEY_INTERRUPT_DISABLE )
    {
      OnboardKeyIntEnable = HAL_KEY_INTERRUPT_ENABLE;
      HalKeyConfig( OnboardKeyIntEnable, OnBoard_KeyCallback);
    }
  }

上一篇:CC1101
下一篇:CC1020 怎么用ADS仿真

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top