Page 1 of 1
BK7231N_3.3.4sdk使用GPIO8无法进入双边沿中断
Posted: 2023年 Sep 27日 19:38
by cheng_JS
当我把模式修改为TUYA_GPIO_IRQ_RISE_FALL,发现无法进入中断,上升沿和下降沿都无法进入中断程序,当我改成TUYA_GPIO_IRQ_RISE时,就可以进入中断程序
/*
TUYA_GPIO_IRQ_T gpio_isr;
Code: Select all
memset(&gpio_isr, 0, SIZEOF(gpio_isr));
gpio_isr.mode = TUYA_GPIO_IRQ_RISE;
gpio_isr.arg = NULL;
gpio_isr.cb = __gpio_irq_rf433_callback;
tkl_gpio_irq_init(RF_DATA, &gpio_isr);
/*irq enable*/
tkl_gpio_irq_enable(RF_DATA);
*/
Re: BK7231N_3.3.4sdk使用GPIO8无法进入双边沿中断
Posted: 2023年 Nov 17日 14:48
by yangjie
BK7231N GPIO 中断不支持双边沿。
gpio 中断初始化代码如下:
Code: Select all
OPERATE_RET tkl_gpio_irq_init(TUYA_GPIO_NUM_E pin_id, CONST TUYA_GPIO_IRQ_T *cfg)
{
bk_gpio_irq_trigger_t trigger;
if(pin_id >= 40){
return OPRT_NOT_SUPPORTED;
}
if(cfg == NULL){
return OPRT_INVALID_PARM;
}
switch (cfg->mode)
{
case TUYA_GPIO_IRQ_RISE:
trigger = IRQ_TRIGGER_RISING_EDGE;
break;
case TUYA_GPIO_IRQ_FALL:
trigger = IRQ_TRIGGER_FALLING_EDGE;
break;
case TUYA_GPIO_IRQ_LOW:
trigger = IRQ_TRIGGER_LOW_LEVEL;
break;
case TUYA_GPIO_IRQ_HIGH:
trigger = IRQ_TRIGGER_HGIH_LEVEL;
break;
default:
return OPRT_NOT_SUPPORTED;
}
pinmap[pin_id].cb = cfg->cb;
pinmap[pin_id].args = cfg->arg;
BkGpioEnableIRQ(pinmap[pin_id].gpio, trigger, (bk_gpio_irq_handler_t)__tkl_gpio_irq_cb, NULL);
return OPRT_OK;
}
当你使用双边沿进行初始化 gpio 中断的时候是会返回 OPRT_NOT_SUPPORTED 的错误的。
gpio 相关的代码在 vendor/bk7231n/tuyaos/tuyaos_adapter/src/driver/tkl_gpio.c 文件中