续前一篇文章
2、nrfx_gpiote_in_init
程序代码如下:
nrfx_err_t nrfx_gpiote_in_init(nrfx_gpiote_pin_t pin, nrfx_gpiote_in_config_t const * p_config, nrfx_gpiote_evt_handler_t evt_handler) { NRFX_ASSERT(nrf_gpio_pin_present_check(pin)); nrfx_err_t err_code = NRFX_SUCCESS; /* Only one GPIOTE channel can be assigned to one physical pin. */ if (pin_in_use_by_gpiote(pin)) { err_code = NRFX_ERROR_INVALID_STATE; } else { int8_t channel = channel_port_alloc(pin, evt_handler, p_config->hi_accuracy); if (channel != NO_CHANNELS) { if (!p_config->skip_gpio_setup) { if (p_config->is_watcher) { nrf_gpio_cfg_watcher(pin); } else { nrf_gpio_cfg_input(pin, p_config->pull); } pin_configured_set(pin); } if (p_config->hi_accuracy) { nrf_gpiote_event_configure((uint32_t)channel, pin, p_config->sense); } else { m_cb.port_handlers_pins[channel - GPIOTE_CH_NUM] |= (p_config->sense) << POLARITY_FIELD_POS; } } else { err_code = NRFX_ERROR_NO_MEM; } } NRFX_LOG_INFO("Function: %s, error code: %s.", __func__, NRFX_LOG_ERROR_STRING_GET(err_code)); return err_code; }





没有回复内容