void Gpio::enableInterrupt(xXx::IGpio_Callback_t callback, void *user) { // Configuration for button use // pio_handler_set_pin(_pin, (PIO_PULLUP | PIO_DEBOUNCE | PIO_IT_RISE_EDGE), interruptFunction); pio_handler_set_pin(_pin, PIO_IT_FALL_EDGE, interruptFunction); _callback[_pin] = callback; _user[_pin] = user; pio_enable_pin_interrupt(_pin); }
void ads7843_set_handler(void (*p_handler) (uint32_t, uint32_t)) { /* Initialize interrupts */ pio_handler_set_pin(BOARD_ADS7843_IRQ_GPIO, BOARD_ADS7843_IRQ_FLAGS, (void (*)(uint32_t, uint32_t)) p_handler ); /* Enable the interrupt */ pio_enable_pin_interrupt(BOARD_ADS7843_IRQ_GPIO); }
/* * @fn nm_bsp_register_isr * @brief Register interrupt service routine * @param[IN] pfIsr * Pointer to ISR handler */ void nm_bsp_register_isr(tpfNmBspIsr pfIsr) { gpfIsr = pfIsr; /* Configure PGIO pin for interrupt from SPI slave, used when slave has data to send. */ sysclk_enable_peripheral_clock(CONF_WINC_SPI_INT_PIO_ID); pio_configure_pin(CONF_WINC_SPI_INT_PIN, PIO_TYPE_PIO_INPUT); pio_pull_up(CONF_WINC_SPI_INT_PIO, CONF_WINC_SPI_INT_MASK, PIO_PULLUP); // pio_set_debounce_filter(CONF_WINC_SPI_INT_PIO, CONF_WINC_SPI_INT_MASK, 10); pio_handler_set_pin(CONF_WINC_SPI_INT_PIN, PIO_IT_LOW_LEVEL, chip_isr); pio_enable_interrupt(CONF_WINC_SPI_INT_PIO, CONF_WINC_SPI_INT_MASK); pio_handler_set_priority(CONF_WINC_SPI_INT_PIO, (IRQn_Type)CONF_WINC_SPI_INT_PIO_ID, CONF_WINC_SPI_INT_PRIORITY); }
void Gpio::enableInterrupt(IGpio_Callback_t callback, void *user) { int groupIndex = groupId2groupIndex(pio_get_pin_group_id(_pin)); if (groupIndex < 0) { return; } _callback[groupIndex][_pin] = callback; _user[groupIndex][_pin] = user; // Todo: // pio_handler_set_pin(_pin, (PIO_PULLUP | PIO_DEBOUNCE | PIO_IT_RISE_EDGE), staticISR); pio_handler_set_pin(_pin, PIO_IT_FALL_EDGE, staticISR); pio_enable_pin_interrupt(_pin); }