从唤醒中断调用app\u timer\u set()

⚠️
你好。。谢谢你来参加论坛。令人兴奋的消息!我们现在正在移动到我们的新论坛平台,将提供更好的功能,并包含在主对话网站的过程。所有帖子和账号都已迁移。我们现在只接受新论坛上的流量-请在//www.wsdof.com/support. 我们将在未来几天内修复bug/优化搜索和标记。
6个职位/0个新职位
最后一篇文章
王一190228
离线
最后一次见到:1年5个月前
已加入:2016-08-05 03:34
从唤醒中断调用app\u timer\u set()

为什么要调用静态void app\u按钮中的app\u timer\u set(app\u ACC\u timer,TASK\u app,50)按下\u cb(void),当芯片唤醒时,有时定时器不能及时执行,会延迟几分钟?

设备:
MT\u对话框
离线
最后一次见到:2个月2周前
工作人员
已加入:2015-06-08 11:34
你好,王毅190228,

你好,王毅190228,

由于您使用的是app\u timer\u set()函数,我假设您使用的是在引入app\u easy\u timer()的sdk5之前的旧SDK,因此我建议您继续使用最新的SDK来构建固件,并使用app\u easy\u timer()API来解决您遇到的问题。app\u timer\u set()有时执行,有时不执行的原因是,设置计时器时BLE内核没有激活,因此计时器功能异常。app\u easy\u timer实现的解决方法是检查ble core是否处于活动状态,如果没有从唤醒中断发送消息,当消息被调度时,它将设置计时器,否则如果ble core处于活动状态,只需正常设置计时器。我也更改了帖子的标题,请不要在英文论坛上用中文发帖。

谢谢你的对话

王一190228
离线
最后一次见到:1年5个月前
已加入:2016-08-05 03:34
你好,我想换衣服

您好,我尝试过在中断回调函数static void app\u button\u press\u cb(void)中将app\u timer\u set()改为app\u easy\u timer(),但运行程序的结果没有改变,与更改前相同,这是为什么?

MT\u对话框
离线
最后一次见到:2个月2周前
工作人员
已加入:2015-06-08 11:34
你好,王毅190228,

你好,王毅190228,

我无法复制您提到的内容,使用ble\u app\u sleepmode项目,并在app\u button\u press\u cb()函数中插入一个计时器集(app\u easy\u timer()),回调在每次按下按钮的计时器中都会正确执行,并在100多次按下按钮的情况下进行测试,并且总是在500毫秒后执行回调,也许您可以共享一些代码来复制您所提到的内容?你用什么例子来做测试?代码有什么变化?如何验证回调从未发生?

谢谢你的对话

王一190228
离线
最后一次见到:1年5个月前
已加入:2016-08-05 03:34
我上传了密码

我上传的代码,有问题的代码sub appcodoon.c文件,现在的代码是app\u timer\u set(),但是之前用app\u easy\u timer()推荐,效果一样。我在sdk5.0.4中使用proxèreporter项目

MT\u对话框
离线
最后一次见到:2个月2周前
工作人员
已加入:2015-06-08 11:34
你好,王毅190228,

你好,王毅190228,

我在代码中没有看到任何可疑的东西,除了你不使用的app\u easy\u timer(),再次尝试复制你得到的东西,我想你在app\u button\u press\u cb()中得到了问题,并且没有一个计时器关闭或者一个或多个计时器没有关闭?使用了ble\u app\u睡眠模式的修改版本(在beggining播发几秒钟,然后进入睡眠等待外部中断),并在app\u按钮中插入了3个计时器(使用app\u easy\u timer(),每个计时器的距离约为500毫秒)。在每个计时器回调中,我都插入了一个arch\u printf()来打印每个计时器将关闭的序列。所以每次按下按钮我都能看到终端打印1,2,3。在所有的测试中,所有的计时器都准时过去了,每次都是同样的打印。所以底线是我无法复制你提到的内容,我相信在使用app\u easy\u timer()时计时器会关闭,你也可以尝试执行相同的测试来验证。也许你看不到的原因是因为回调中的一个条件。

谢谢你的对话