使用nRF52832 sdk控制GPIOTE功能时遇到一些麻烦, 当使用14.01版本(SDK)时,似乎GPIOTE功能无法与BLE功能一起使用,我使用下面的代码,它制作系统的挂起问题,为什么?
我想知道GPIOTE功能是否不能与BLE功能一起使用, 和另一种使用BLE功能的方法, 感谢您的支持和善意,
#define PIN_IN BUTTON_4
//#define PIN_OUT BSP_LED_3
void in_pin_handler(nrf_drv_gpiote_pin_t pin, nrf_gpiote_polarity_t action)
{
printf("love %d: %d\n", (int)pin, (int)action);
// nrf_drv_gpiote_out_toggle(PIN_OUT);
}
/**
* @brief Function for configuring: PIN_IN pin for input, PIN_OUT pin for output,
* and configures GPIOTE to give an interrupt on pin change.
*/
void gpio_external_int_init(void)//love_1108
{
uint32_t err_code;
err_code = nrf_drv_ppi_init();
APP_ERROR_CHECK(err_code);
//
err_code = nrf_drv_gpiote_init();
APP_ERROR_CHECK(err_code);
//
// (void)nrf_drv_gpiote_init();
// nrf_drv_gpiote_out_config_t out_config = GPIOTE_CONFIG_OUT_SIMPLE(false);
// err_code = nrf_drv_gpiote_out_init(PIN_OUT, &out_config);
// APP_ERROR_CHECK(err_code);
nrf_drv_gpiote_in_config_t in_config = GPIOTE_CONFIG_IN_SENSE_TOGGLE(false);
in_config.pull = NRF_GPIO_PIN_PULLUP;
err_code = nrf_drv_gpiote_in_init(PIN_IN, &in_config, in_pin_handler);
APP_ERROR_CHECK(err_code);
nrf_drv_gpiote_in_event_enable(PIN_IN, true);
}
答案 0 :(得分:0)
虽然您没有提供太多详细信息,例如"与BLE功能"一起使用的含义,但我发现SDK示例ble_app_template
存在问题。在我的情况下,原因是文件bsp_btn_ble.c
要求按钮比board_custom.h
定义的更多。因此函数startup_event_extract()
想要检查我的硬件上不存在的BTN_ID_WAKEUP_BOND_DELETE
的状态会导致断言。令人不安的是,BTN_ID_WAKEUP_BOND_DELETE
和其他按钮在c文件中定义,而不是从custom_board.h
派生。
因此,跟踪电路板初始化,您可能会发现类似ASSERT(button_idx < BUTTONS_NUMBER)
的内容,这会导致我的情况挂起。