多个计时器不工作

4个职位/0个新职位
最后一篇文章
维希利卡
离线
最后一次见到:9个月5天前
已加入:2015-03-17 08:16
多个计时器不工作

嗨,对话小组,

我在ble\u app\u外围项目中使用了3个计时器。首先,我启动了一个持续时间为2ms的systick计时器,然后在systick计时器的回调中,我使用100ms的api app\u easy\u timer()启动了一个内核计时器。我继续调用这个函数,到目前为止,项目运行良好。现在,当我如下调用另一个5秒的内核计时器时,设备执行突然停止。这是我正在使用的代码:

systick\u register\u callback(句柄\u 2ms\u计时器);

无效abc(void)
{
.....
系统启动(2000,1);

}
无效句柄\u 2ms\u计时器(void)
{

系统停止();

监听间隔=50;
timer\u listen\u interval=app\u easy\u timer((listen\u interval*10),handle\u listen\u interval\u timer);
用户_adv();

}

无效用户\u adv()
{
结构gapm\u开始\u广告\u cmd*cmd;
cmd=app_easy_gap_non_connectable_advertise_get_active();

set_parser_data();

设置信标数据(cmd);

app_easy_gap_non_connectable_advertise_start();
timer\u adv\u interval=app\u easy\u timer((adv\u interval*10),handle\u adv\u interval\u timer);

}

执行不会到达两个内核计时器的回调处理程序。
当只调用两个定时器,systick和adv\u interval\u timer时,设备运行正常。当我同时引入第二个内核计时器时,问题就开始了。

提前谢谢,

维希利卡

设备:
MT\u对话框
离线
最后一次见到:1个月14小时前
工作人员
已加入:2015-06-08 11:34
你好,wisilica,

你好,wisilica,

同时设置两个内核计时器没有问题,您应该记住的几点是:

  • Systick定时器无法唤醒设备,如果您启动Systick定时器,设备决定进入睡眠状态,则设备不会通过定时器唤醒,但只有在服务下一个BLE事件时,如果您设置Systick定时器,然后您进入睡眠状态,则回叫将永远不会发生。
  • 唯一可以唤醒设备的计时器是内核计时器。
  • 当设备处于唤醒状态时,您必须设置内核计时器,我可以看到您正在设置计时器,当您开始播发时,计时器将发生。

当你说你的代码停止执行,它在哪里停止?

谢谢你的对话

维希利卡
离线
最后一次见到:9个月5天前
已加入:2015-03-17 08:16
嗨,对话,

嗨,对话,

我发现我为两个定时器设置的持续时间是相同的。这就是设备停止执行的原因吗?如果我为两个计时器设置不同的持续时间,执行不会停止。

谢谢,
维希利卡

MT\u对话框
离线
最后一次见到:1个月14小时前
工作人员
已加入:2015-06-08 11:34
你好,wisilica,

你好,wisilica,

不,这不应该发生,您必须检查代码在哪一个函数中暂停,以了解为什么会发生这种情况。

谢谢你的对话