你好,
我们正在使用带有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.
设备:
嗨gme_johannes,
感谢您的问题,但您已经为您创建了类似的论坛线程。我会在下面的论坛螺纹中回复你。请尝试在论坛上重复您的帖子。
https://support.dialog-semicondiondiondum/forums/post/dialog-smartbond-bluetooth-low-energy-%2%80%93-software/use-multiple-wkupctenableirq-different.
谢谢,PM_DIALOG.
道歉,我必须意外创建线程的副本,而不是按预期修改自己的文本。我在原来的帖子中纠正了它。
请随时删除此线程。
BR Johannes.
嗨gme_johannes,
没问题。没关系,所以我把它留下了!如果您有任何关注问题,请更新其他论坛线程。
谢谢,PM_DIALOG.