BK7231N_3.3.4sdk使用GPIO8无法进入双边沿中断

Wi-Fi 设备、Wi-Fi 低功耗设备、Wi-Fi BLE 双模设备、Ethernet设备、Ethernet+Wi-Fi设备等
Post Reply
cheng_JS
Posts: 79

当我把模式修改为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);

*/

yangjie
Posts: 191

Re: BK7231N_3.3.4sdk使用GPIO8无法进入双边沿中断

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

Post Reply