GPIO中断检测

学到更多常见问题解答教程

2个帖子/ 0新
最后一篇
DHRUV11593
离线
最后一次露面:2年1个月前
加入:2018-06-08 18:04
GPIO中断检测

嗨对话框,

问题陈述
- 使用GPIO_REGISTERCALLBACK()寄存GPIO中断/ ISR,并检测在系统启动和运行时短按和长按按钮。

我尝试了什么

  • 我正在使用此功能的SW_2(P0_6),因为当前已用于初始化BLE广告的WKUPCT_REGISTER_CALLBACK()。
  • 我能够通过以下方法注册GPIO中断回调
  • void register_button_isr(void)
    {
    nvic_disableirq(gpio1_irqn);
    //按按钮中断的按钮设置ISR回调
    gpio_registercallback(gpio1_irqn,push_button_callback);
    //按钮输入
    gpio_enableirq(gpio_port_0,gpio_pin_6,gpio1_irqn,true,true,0);
    }

  • 我已在set_pad_functions()下配置GPIO并保留在gpio_reservations()中的GPIO。
  • 如果按下SW_2,请在DA14583_PRODK上转动LED,然后再次按下,关闭LED。

观察

  • 当系统处于活动模式时,即广播BLE Advertisement数据包,SW_2引脚不会生成ISR
  • 如果我通过修改Blinky示例,我遵循相同的过程,一切都只是完美的

附加在下面(ble_examples.zip)是包含修改后的blinky示例和我在ble_all_in_one应用程序中添加的新文件的文件

仰望积极的回应。

提前感谢你

问候
dhruv shah

设备:
PM_DIALOG.
离线
最后一次露面:38分钟38秒前
员工
加入:2018-02-08 11:03
嗨DHRUV11593,

嗨DHRUV11593,

它期望在系统处于活动模式时,您的项目无法正常工作,因为芯片在广告和连接间隔之间睡眠。SDK的Blinky示例不支持任何BLE功能,因此您可以使用ISR实现该功能。在BLE_ALL_IN_ONE项目的情况下,您应该使用唤醒控制器并使用与SW3类似的方式按下按钮。您将找到有关按钮配置的示例代码,以及如何执行此操作。

问候,pm_dialog