首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于nRF52832的GPIOTE功能(外部中断)

对于nRF52832的GPIOTE功能(外部中断)
EN

Stack Overflow用户
提问于 2017-11-15 09:58:53
回答 1查看 1.2K关注 0票数 0

我在使用nRF52832 sdk控制GPIOTE函数时遇到了一些问题,在使用14.01版本(SDK)时,GPIOTE函数似乎不能和BLE函数一起使用,我使用了下面的代码,它造成了系统挂起的问题,为什么?

我想知道GPIOTE函数是否不能与BLE函数一起使用,以及使用该函数与BLE函数的另一种方法,提前感谢您的支持和好意。

代码语言:javascript
复制
#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);
}
EN

回答 1

Stack Overflow用户

发布于 2018-01-24 12:21:16

虽然你没有提供更多的细节,比如什么是“与BLE函数一起使用”,但我发现SDK示例ble_app_template有一个问题。在我的例子中,原因是文件bsp_btn_ble.c要求有比我的board_custom.h定义的更多的按钮。因此,我的硬件上不存在用于检查BTN_ID_WAKEUP_BOND_DELETE状态的函数startup_event_extract()会导致断言。令人不安的是,BTN_ID_WAKEUP_BOND_DELETE和其他按钮是在c文件中定义的,而不是从custom_board.h派生的。因此,跟踪电路板初始化,您可能会发现类似于ASSERT(button_idx < BUTTONS_NUMBER)的内容,在我的例子中,它导致了挂起。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47298186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档