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

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
6个帖子/ 0新
最后一篇
gme_johannes
离线
最后一次露面:3周2天前
加入:2017-12-22 10:09
使用多个wkupct_enable_irq与不同的回调?

你好,

我们正在使用带有SDK5的“旧”物联网传感器,移植到MurataZy(DA14580)。

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

#ifndef ble_app_sensor_fusion void config_da1458x_pin_intr_1_enable(void){wrbl_env.wrbl_intr_1_cb = wkup_intr_1_cb;wkupct_register_callback(wrbl_env.wrbl_intr_1_cb);#ifdef使用_mag_drdy_intr wkupct_enable_irq(0x0040,0x0040,1,0);//活动高#else wkupct_enable_irq(wkupct_pin_select(int1_port,int1_pin),wkupct_pin_select(int1_port,int1_pin),1,0);//活动低#endif}

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

我的理解是:

1)多个GPIO可以配置为唤醒源。
2)对于WKUPCT_ENABLE_IRQ,无法为不同的中断源注册不同的回调函数。
3)如果wkupct_register_callback()在整个代码中多次调用,则将使用最后一个注册的回调。
正确的?

问题:
4)醒来后我可以读出一位寄存器,告诉我哪个PIN是中断源?从https://support.dialog-semicondiondiondum/forums/post/dialog-smartbond-bl ...我明白这是不可能的吗?
5)但是呢?使用nvic_getpendingirq怎么样?没有不同的中断分配了不同的IRQN?
- >我发现它们都使用相同的IRQN:

// datasheet.h wkup_quadec_irqn = 9,/ *组合唤醒捕获定时器中断,GPIO中断和Quaddecoder中断* /

BR Johannes.

设备:
PM_DIALOG.
离线
最后一次露面:1天2小时前
职员
加入: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
离线
最后一次露面:3周2天前
加入:2017-12-22 10:09
对,那是正确的。

对,那是正确的。

https://support.dialog-semicondiondiondum/forums/post/dialog-smartbond-bl ...我理解我可以在中断触发后检查GPIO状态。

在任何情况下,这会足够快吗?如果我在回调函数中做的第一件事是检查它的状态,那么GPIO状态是否会始终保留。

PM_DIALOG.
离线
最后一次露面:1天2小时前
职员
加入:2018-02-08 11:03
嗨gme_johannes,

嗨gme_johannes,

在过去的论坛中,您已经提到的,mt_dialog正确地提到没有寄存器,其中将指示中断发生的端口/引脚,因此您必须在设备唤醒后立即读取引脚的状态根据引脚状态,您必须确定将触发哪个回调函数。

谢谢,PM_DIALOG.

gme_johannes
离线
最后一次露面:3周2天前
加入:2017-12-22 10:09
谢谢,我会尝试

谢谢,我会尝试以这种方式解决我的问题。

PM_DIALOG.
离线
最后一次露面:1天2小时前
职员
加入:2018-02-08 11:03
嗨gme_johannes,

嗨gme_johannes,

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

谢谢,PM_DIALOG.