I am migrating one of Segger Embedded Studio based project to NRF Connect SDK for nrf53 series of board.
I migrated the function that uses GPIOTE feature using relevant APIs. However, it's not working as expected. I wasn't able to find any example codes as well on this.
Below is my code. I am trying to set a LED to high when the event (LOTOHI) is triggered on TEST_PIN. However, when there is a state change from Low-High on TEST_PIN, the control isnt entering the handler function. I needed some help in correcting the code if something is incorrect in the way I have configured GPIOTE in the code.
My prj.conf has CONFIG_NRFX_GPIOTE=y included
int gpio_init() { gpio0 = device_get_binding(DEVICE_DT_NAME(DT_NODELABEL(gpio0))); gpio1 = device_get_binding(DEVICE_DT_NAME(DT_NODELABEL(gpio1))); led_err = gpio_pin_configure(gpio1, LED_PIN, GPIO_OUTPUT | GPIO_OUTPUT_INIT_LOW); } void in_pin_handler(nrfx_gpiote_pin_t pin, nrfx_gpiote_trigger_t trigger) { LOG_INF("test"); gpio_pin_set(gpio0, LED_PIN, HIGH); } void gpio_setting_init(void) { nrfx_err_t err_code; static uint8_t in_channel; err_code = nrfx_gpiote_channel_alloc(&in_channel); err_code = nrfx_gpiote_init(NRFX_GPIOTE_DEFAULT_CONFIG_IRQ_PRIORITY); static const nrfx_gpiote_input_config_t in_config_test = { .pull = NRF_GPIO_PIN_NOPULL, }; /*Finds rising edge instead of just toggling*/ static const nrfx_gpiote_trigger_config_t trigger_config_test = { .trigger = NRFX_GPIOTE_TRIGGER_LOTOHI, .p_in_channel = &in_channel, }; static const nrfx_gpiote_handler_config_t handler_config_test = { .handler = in_pin_handler, }; /*gpiote initialization has been done in clock and timer initialization, no need to do it again*/ err_code = nrfx_gpiote_input_configure(TEST_PIN, &in_config_test, &trigger_config_test, &handler_config_test); nrfx_gpiote_trigger_enable(TEST_PIN, true); LOG_INF("nrfx_gpiote initialized"); }