嗨,对话小组,
我在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时,设备运行正常。当我同时引入第二个内核计时器时,问题就开始了。
提前谢谢,
维希利卡
你好,wisilica,
同时设置两个内核计时器没有问题,您应该记住的几点是:
当你说你的代码停止执行,它在哪里停止?
谢谢你的对话
嗨,对话,
我发现我为两个定时器设置的持续时间是相同的。这就是设备停止执行的原因吗?如果我为两个计时器设置不同的持续时间,执行不会停止。
谢谢,
维希利卡
你好,wisilica,
不,这不应该发生,您必须检查代码在哪一个函数中暂停,以了解为什么会发生这种情况。
谢谢你的对话