关于global_int_stop.

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

嗨,对话框,

我有关于如何在DA1458X_SDK示例中的BLE_APP_ALL_IN_ONE项目中MAIN_FUND()中的WHINH循环中允许外设中断的问题。
作为示例代码,如果(ble_app_present),始终调用global_int_stop()。
我想如果IRQ始终禁用在无限循环中,则不检测到任何正常的外围中断,是吗?
因此,如果使用一些外设中断,我认为您应该删除Global_int_stop()。
我觉得奇怪的是,如果在if(ble_app_present)子句中调用wfi(),因此为什么必须禁用IRQ。
是否正确或有其他方法可以在主循环中允许外围中断?

我期待着别人的好答案。

最好的,

设备:
PM_DIALOG.
离线
最后一次露面:3天17小时前
职员
加入:2018-02-08 11:03
嗨Diogenes,

嗨Diogenes,

当系统想要禁用它可以处理的所有中断时,使用Global_int_stop()宏。此宏在设备进入睡眠之前调用,而不是在睡眠模式下。这意味着在此宏之后,系统将继续接收中断,但只触发中断的处理程序。在禁用中断以执行决定移动到睡眠模式的检查时,调用WFI()。如果睡眠前有任何挂起的中断,则会触发Global_Int_start(),并且系统可以开始再次处理中断。因此,您的结论是,如果IRQ始终禁用无限循环,则不检测到任何正常的外围中断,不正确,强烈建议不要删除global_int_stop()。此外,请注意,如果设备处于睡眠模式,则只能从唤醒控制器唤醒,并且通过任何其他中断,因为所有外围块都关闭。

谢谢,PM_DIALOG.