static void ser_phy_deinit_gpiote(void) { nrf_drv_gpiote_in_uninit(SER_PHY_SPI_MASTER_PIN_SLAVE_REQUEST); #ifndef _SPI_5W_ nrf_drv_gpiote_in_uninit(SER_PHY_SPI_MASTER_PIN_SLAVE_READY); #endif }
void gpio_irq_free(gpio_irq_t *obj) { nrf_drv_gpiote_in_uninit(obj->ch); m_gpio_cfg[obj->ch].used_as_irq = false; m_channel_ids[obj->ch] = 0; gpio_apply_config(obj->ch); }
static void gpio_apply_config(uint8_t pin) { if (m_gpio_initialized & (1UL << pin)) { if ((m_gpio_cfg[pin].direction == PIN_OUTPUT) && (!m_gpio_cfg[pin].used_as_irq)) { nrf_drv_gpiote_out_uninit(pin); } else { nrf_drv_gpiote_in_uninit(pin); } } if (m_gpio_cfg[pin].used_as_gpio || m_gpio_cfg[pin].used_as_irq) { if ((m_gpio_cfg[pin].direction == PIN_INPUT) || (m_gpio_cfg[pin].used_as_irq)) { //Configure as input. nrf_drv_gpiote_in_config_t cfg; cfg.hi_accuracy = false; cfg.is_watcher = false; cfg.sense = NRF_GPIOTE_POLARITY_TOGGLE; if (m_gpio_cfg[pin].used_as_irq) { cfg.pull = NRF_GPIO_PIN_PULLUP; nrf_drv_gpiote_in_init(pin, &cfg, gpiote_irq_handler); if ((m_gpio_irq_enabled & (1 << pin)) && (m_gpio_cfg[pin].irq_rise || m_gpio_cfg[pin].irq_fall)) { nrf_drv_gpiote_in_event_enable(pin, true); } } else { switch(m_gpio_cfg[pin].pull) { case PullUp: cfg.pull = NRF_GPIO_PIN_PULLUP; break; case PullDown: cfg.pull = NRF_GPIO_PIN_PULLDOWN; break; default: cfg.pull = NRF_GPIO_PIN_NOPULL; break; } nrf_drv_gpiote_in_init(pin, &cfg, NULL); } } else { // Configure as output. nrf_drv_gpiote_out_config_t cfg = GPIOTE_CONFIG_OUT_SIMPLE(m_gpio_cfg[pin].init_high); nrf_drv_gpiote_out_init(pin, &cfg); } m_gpio_initialized |= (1UL << pin); } else { m_gpio_initialized &= ~(1UL << pin); } }
static void gpiote_pin_uninit(uint8_t pin) { if (m_gpio_initialized & ((gpio_mask_t)1UL << pin)) { if ((m_gpio_cfg[pin].direction == PIN_OUTPUT) && (!m_gpio_cfg[pin].used_as_irq)) { nrf_drv_gpiote_out_uninit(pin); } else { nrf_drv_gpiote_in_uninit(pin); } } }
uint32_t app_uart_close(uint16_t app_uart_uid) { if (app_uart_uid < UART_INSTANCE_GPIOTE_BASE) { on_uart_event(ON_UART_CLOSE); return NRF_SUCCESS; } on_uart_event(ON_UART_CLOSE); nrf_drv_gpiote_in_uninit(NRF_UART0->PSELCTS); return NRF_SUCCESS; }