嗨,对话框中,
问题陈述
-使用GPIO_RegisterCallback()注册一个GPIO中断/ISR,并检测当系统正常运行时是否短按和长按按钮。
我试着什么
- 我使用SW_2 (P0_6)来实现这个功能,因为SW_3目前被用于初始化BLE通告的wkupct_register_callback()。
- 我可以通过下面的方法注册GPIO中断回调
- 我已经在set_pad_functions()下配置了GPIO,并在GPIO_reservations()中保留了GPIO。
- 如果按下SW_2,则打开DA14583_ProDK的LED,再次按下时关闭LED。
空白register_button_isr(空白)
{
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);
}
观察
- 当系统处于主动模式(广播BLE通告报文)时,ISR不是由SW_2引脚生成的
- 如果我通过修改Blinky示例遵循同样的过程,那么一切都会完美地运行
下面(ble_examples.zip)是包含修改后的Blinky示例和我在ble_all_in_one应用程序中添加的新文件的文件
期待一个积极的回应。
先谢谢你
问候
Dhruv沙
关键词:
设备:
嗨dhruv11593,
当系统处于活动模式时,您的项目不工作是可以预期的,因为芯片在广告和连接间隔之间进入睡眠状态。SDK的Blinky示例不支持任何BLE功能,所以可以使用ISR实现。在ble_all_in_one项目中,您应该使用唤醒控制器,并以与SW3类似的方式实现按钮按下。您可以在附件中找到一个关于按钮配置的示例代码,以及如何进行配置。
问候,PM_Dialog