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 文件中