Double-edge GPIO interrupts do not work

Hi,

        We have a piece of code based on zephyr Driver to set up a double-edge GPIO interrupt. I set the interrupt flag to GPIO_INT_EDGE_BOTH. But it doesn't seem to trigger a rising edge interrupt.

        Here is my code.

static void isr_handler(const struct device *device,
               struct gpio_callback *cb, uint32_t pins)
{
    printf("interrupt\r\n");
}

static int pin_configure(void)
{
    int rc;
    static struct gpio_callback gpio_ctx;

    const struct device *gpio = device_get_binding("GPIO_0");
    gpio_pin_t pin = 25;

    rc = gpio_pin_configure(gpio, pin, GPIO_PULL_UP | GPIO_INPUT);

    gpio_init_callback(&gpio_ctx, isr_handler, BIT(pin));

    rc = gpio_add_callback(gpio, &gpio_ctx);
    if (rc) {
        return rc;
    }

    rc = gpio_pin_interrupt_configure(gpio, pin, GPIO_INT_EDGE_BOTH);
    if (rc) {
        return rc;
    }

    return 0;
}

Parents Reply Children
No Data
Related