Topic

FAQ
Login Register
8258 zigbee sdk GPIO中断问题
cq
Jul 27, 2022 09:24

/

A

/A

#define BUTTON1 GPIO_PD7
#define BUTTON2 GPIO_PB1
#define BUTTON3 GPIO_PC4

#define BUTTON4 GPIO_PC3


#define IO_PD_SINGLE REG_ADDR8(0x5e3)

#define IO_PB_SINGLE REG_ADDR8(0x5e1)

#define IO_PC_SINGLE REG_ADDR8(0x5e2)


初始化部分
drv_gpio_irq_en(BUTTON1);

drv_gpio_irq_config(GPIO_IRQ_MODE,BUTTON1,FALLING_EDGE,GPIO_IRQ);
后面依次是BUTTON2,BUTTON3,BUTTON4.


回调函数部分代码

void GPIO_IRQ(void) {


if( IO_PD_SINGLE |= BUTTON1_ISR_SINGLE ) {

drv_gpio_irq_dis(BUTTON1);

     if( TL_ZB_TIMER_SCHEDULE(sampleLight_OnOff_evt, NULL, 50) == NULL ) {

         drv_gpio_irq_en(BUTTON1);

      }

}


}

****************************************************************************************

按下按键

定义3个按键,#define TIMER_EVENT_NUM (24),不会出现问题

定义4个按键 #define TIMER_EVENT_NUM (64) ,会出现ZB_EXCEPTION_POST(SYS_EXCEPTTION_COMMON_TIMER_EVEVT);
问题的原因在哪里?为什么定时任务数量会不够使用?


1 replies
TL_Soyo Jul 27, 2022 10:28
0
/A

你好,

  目前只支持3个GPIO中断同时检测,可以参考driver sdk对中断的解释,ZB_EXCEPTION_POST(SYS_EXCEPTTION_COMMON_TIMER_EVEVT);为添加或者删除定时任务错误才会报告,可以检查一下变量ev_timer.timerEventPool.used_num 和 g_ev_timer_maxNum,是否定时器添加过多。

建议和原始sdk对比,找到具体出现这个问题的原因。