为什么要调用静态void app\u按钮中的app\u timer\u set(app\u ACC\u timer,TASK\u app,50)按下\u cb(void),当芯片唤醒时,有时定时器不能及时执行,会延迟几分钟?
你好,王毅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处于活动状态,只需正常设置计时器。我也更改了帖子的标题,请不要在英文论坛上用中文发帖。
谢谢你的对话
您好,我尝试过在中断回调函数static void app\u button\u press\u cb(void)中将app\u timer\u set()改为app\u easy\u timer(),但运行程序的结果没有改变,与更改前相同,这是为什么?
我无法复制您提到的内容,使用ble\u app\u sleepmode项目,并在app\u button\u press\u cb()函数中插入一个计时器集(app\u easy\u timer()),回调在每次按下按钮的计时器中都会正确执行,并在100多次按下按钮的情况下进行测试,并且总是在500毫秒后执行回调,也许您可以共享一些代码来复制您所提到的内容?你用什么例子来做测试?代码有什么变化?如何验证回调从未发生?
我上传的代码,有问题的代码sub appcodoon.c文件,现在的代码是app\u timer\u set(),但是之前用app\u easy\u timer()推荐,效果一样。我在sdk5.0.4中使用proxèreporter项目
我在代码中没有看到任何可疑的东西,除了你不使用的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()时计时器会关闭,你也可以尝试执行相同的测试来验证。也许你看不到的原因是因为回调中的一个条件。
你好,王毅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处于活动状态,只需正常设置计时器。我也更改了帖子的标题,请不要在英文论坛上用中文发帖。
谢谢你的对话
您好,我尝试过在中断回调函数static void app\u button\u press\u cb(void)中将app\u timer\u set()改为app\u easy\u timer(),但运行程序的结果没有改变,与更改前相同,这是为什么?
你好,王毅190228,
我无法复制您提到的内容,使用ble\u app\u sleepmode项目,并在app\u button\u press\u cb()函数中插入一个计时器集(app\u easy\u timer()),回调在每次按下按钮的计时器中都会正确执行,并在100多次按下按钮的情况下进行测试,并且总是在500毫秒后执行回调,也许您可以共享一些代码来复制您所提到的内容?你用什么例子来做测试?代码有什么变化?如何验证回调从未发生?
谢谢你的对话
我上传的代码,有问题的代码sub appcodoon.c文件,现在的代码是app\u timer\u set(),但是之前用app\u easy\u timer()推荐,效果一样。我在sdk5.0.4中使用proxèreporter项目
你好,王毅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()时计时器会关闭,你也可以尝试执行相同的测试来验证。也许你看不到的原因是因为回调中的一个条件。
谢谢你的对话