#include #include #include "pico/stdlib.h" #include "hardware/gpio.h" #include "hardware/irq.h" #define BUTTON_PIN_ROW_1 16 #define BUTTON_PIN_COLUMN_1 18 #define LED_PIN 25 void button_callback(uint gpio, uint32_t events); int main() { stdio_init_all(); printf("Starting\n"); gpio_init(BUTTON_PIN_ROW_1); //gpio_init(BUTTON_PIN_COLUMN_1); gpio_set_dir(BUTTON_PIN_COLUMN_1, GPIO_OUT); gpio_set_dir(BUTTON_PIN_ROW_1, GPIO_IN); gpio_pull_up(BUTTON_PIN_COLUMN_1); gpio_set_irq_enabled(BUTTON_PIN_ROW_1, GPIO_IRQ_EDGE_RISE | GPIO_IRQ_EDGE_FALL, true); gpio_set_irq_callback(&button_callback); irq_set_enabled(IO_IRQ_BANK0, true); //gpio_set_irq_enabled_with_callback(BUTTON_PIN_ROW_1, GPIO_IRQ_EDGE_FALL | GPIO_IRQ_EDGE_RISE, true, &button_callback); gpio_init(LED_PIN); gpio_set_dir(LED_PIN, GPIO_OUT); while (true) { sleep_ms(1000); } } void button_callback(uint gpio, uint32_t events){ gpio_acknowledge_irq(gpio, events); if(gpio == BUTTON_PIN_ROW_1){ if (events == GPIO_IRQ_EDGE_RISE){ gpio_put(LED_PIN, true); printf("irq is happend \n"); } else{ gpio_put(LED_PIN, false); } } }