zigbee按键IO口的修改

来源:互联网 发布:买大班模型 淘宝店 编辑:程序博客网 时间:2024/04/29 08:17

ZigBee地板上的按键有两种方式检测触发:一种是轮询扫描,另一种是中断的方式。

我们来看看怎么把轮询扫描改成中断的方式。

很简单下面的函数是打开或者关闭中断的,如果打开中断系统就不会启动定时器去扫描按键。

/* Interrupt option - Enable or disable */
#define HAL_KEY_INTERRUPT_DISABLE    0x00
#define HAL_KEY_INTERRUPT_ENABLE     0x01

/* Initialize Key stuff *///HAL_KEY_INTERRUPT_DISABLE非中断检测,与按键有关

    HalKeyConfig(HAL_KEY_INTERRUPT_ENABLE, OnBoard_KeyCallback);

如果打开中断就不会执行下面的定时器去扫描按键

   /* if interrupt disabled, do next polling */
    if (!Hal_KeyIntEnable)//如果不是中断方式的话就定时启动此事件检测按键
    {
      osal_start_timerEx( Hal_TaskID, HAL_KEY_EVENT, 100);//定时器
    }


按键引脚的修改

  //检测按键S2是否按下
if(HAL_PUSH_BUTTON1())//这里需要改成低电平按下
{
  keys|=HAL_KEY_SW_6;
//  keys|=HAL_KEY_SW_7;
}


#define HAL_PUSH_BUTTON1()        (PUSH1_POLARITY (PUSH1_SBIT))
#define HAL_PUSH_BUTTON2()        (PUSH2_POLARITY (PUSH2_SBIT))


#if defined (HAL_BOARD_CC2530EB_REV17)
  #define PUSH1_POLARITY    ACTIVE_HIGH
#elif defined (HAL_BOARD_CC2530EB_REV13)
  #define PUSH1_POLARITY    ACTIVE_LOW
#else
  #error Unknown Board Indentifier
#endif


 #define ACTIVE_LOW        !
#define ACTIVE_HIGH       !!    /* double negation forces result to be '1' */

最重要的就是下面这一句其他的都是浮云,修改一定要抓住最本质的内容。

/* S1 */
#define PUSH1_BV          BV(1)
#define PUSH1_SBIT        P0_1 


0 0
原创粉丝点击