使用多个wkupct_enable_irq与不同的回调?

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.xmece.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
6个员额/ 0个新员额
最后发表
gme_johannes
离线
最后看到:4个月3个星期前
加入:2017-12-22 10:09
使用多个wkupct_enable_irq与不同的回调?

你好,

我们使用的是SDK5的“老”物联网传感器,移植到Murata ZY (DA14580)。

SDK使用BMI160在操作期间中断(FIFO水印传感器读取)和在睡眠期间(运动唤醒),例如。

的ifndef BLE_APP_SENSOR_FUSION空白config_da1458x_pin_intr_1_enable {wrbl_env(无效)。wrbl_intr_1_cb = wkup_intr_1_cb;wkupct_register_callback (wrbl_env.wrbl_intr_1_cb);#ifdef USE_MAG_DRDY_INTR wkupct_enable_irq(0x0040, 0x0040, 1,0);//激活高#else WKUPCT_PIN_SELECT(INT1_PORT, INT1_PIN), WKUPCT_PIN_SELECT(INT1_PORT, INT1_PIN), 1,0);//激活低电平

我们想要使用另一个GPIO作为中断来执行特定的命令,它应该在操作期间工作,但也在睡眠模式(因此我们不能使用GPIO_EnabeIRQ)。

我的理解是:

1)可以配置多个gpio作为唤醒源。
2)对于wkupct_enable_irq,不能为不同的中断源注册不同的回调函数。
3)如果wkupct_register_callback()在整个代码中被多次调用,最后注册的回调将被使用。
正确吗?

问题:
4)是否有一个寄存器,我可以在醒来后读取,告诉我哪个pin是中断源?从https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl..。我知道这是不可能的?
5)但是使用NVIC_GetPendingIRQ怎么样呢?不同的中断不是分配了不同的IRQn吗?
>我发现他们都使用相同的IRQn:

// datasheet.h WKUP_QUADEC_IRQn = 9, /*结合了唤醒捕获定时器中断、GPIO中断和QuadDecoder中断*/

BR约翰内斯

设备:
PM_Dialog
离线
最后看到:1周4天前
工作人员
加入:2018-02-08 11:03
嗨gme_johannes,

嗨gme_johannes,

关于你的第一个问题,是的,你可以配置多个GPIO作为唤醒源。请检查下面的代码片段:

wkupct_enable_irq (WKUPCT_PIN_SELECT (GPIO_BUTTON_PORT GPIO_BUTTON_PIN) | WKUPCT_PIN_SELECT (GPIO_BUTTON_2_PORT GPIO_BUTTON_2_PIN) WKUPCT_PIN_POLARITY (GPIO_BUTTON_PORT、GPIO_BUTTON_PIN WKUPCT_PIN_POLARITY_LOW) | WKUPCT_PIN_POLARITY (GPIO_BUTTON_2_PORT, GPIO_BUTTON_2_PIN WKUPCT_PIN_POLARITY_LOW), 1, 40);

关于第二个问题,你能否澄清一下?您是正确的,在wkupct_register_callback()中,您只能注册一个回调函数。那么,如果我能理解正确的话,你想要完成的是从不同的唤醒中断触发不同的回调函数?例如,如果你从GPIO_1获得中断,那么callback_1应该执行;如果你从GPIO_2获得中断,那么callback_2应该执行。

谢谢,PM_Dialog

gme_johannes
离线
最后看到:4个月3个星期前
加入:2017-12-22 10:09
是的,没错。

是的,没错。

https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl..。我知道我可以在中断触发后检查GPIO状态。

这在任何情况下都够快吗?如果我在回调函数中做的第一件事是检查它的状态,那么GPIO状态会一直保持足够长的时间吗?

PM_Dialog
离线
最后看到:1周4天前
工作人员
加入:2018-02-08 11:03
嗨gme_johannes,

嗨gme_johannes,

在过去的论坛线程,你已经提到,MT_Dialog正确地提到没有寄存器将指示端口/引脚中断发生,所以你必须在设备被唤醒后读取引脚的状态,根据引脚的状态,你必须决定将触发哪个回调函数。

谢谢,PM_Dialog

gme_johannes
离线
最后看到:4个月3个星期前
加入:2017-12-22 10:09
谢谢,我会尽力的

谢谢,我将尝试用这种方式来解决我的问题。

PM_Dialog
离线
最后看到:1周4天前
工作人员
加入:2018-02-08 11:03
嗨gme_johannes,

嗨gme_johannes,

谢谢你接受我的回答。如果您还有其他问题,请告诉我。

谢谢,PM_Dialog