关于全球国际站

⚠️
你好。。谢谢你来参加论坛。令人兴奋的消息!我们现在正在移动到我们的新论坛平台,将提供更好的功能,并包含在主对话网站的过程。所有帖子和账号都已迁移。我们现在只接受新论坛上的流量-请在//www.xmece.com/support. 我们将在未来几天内修复bug/优化搜索和标记。
2个职位/0个新职位
最后一篇文章
薯蓣属
离线
最后一次见到:2年5个月前
已加入:2018-10-04 05:09
关于全球国际站

嗨,Dialog,

我有一个问题,关于如何在DA1458x\u SDK示例中的ble\u app\u all\u one项目中的main\u func()while循环中允许外设中断。
作为示例代码,在正常情况下if(BLE\u APP\u PRESENT),always GLOBAL\u INT\u STOP()被调用。
我猜如果IRQ在无限循环中总是被禁用,那么任何正常的外设中断都不会被检测到,对吗?
因此,如果您使用一些外设中断,我认为您应该删除GLOBAL\u INT\u STOP()。
我觉得奇怪的是,在if(BLE\u APP\u PRESENT)子句中调用了WFI(),所以为什么必须禁用IRQ。
在主循环中允许外设中断是正确的还是有其他方法?

我期待着有人的好答案。

最好的,

设备:
PM\U对话框
离线
最后一次见到:1天17小时前
工作人员
已加入:2018-02-08 11:03
嗨,提奥奇尼斯,

嗨,提奥奇尼斯,

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

谢谢,下午好