嗨,对话框的团队,
我在我的ble_app_peripheral项目中使用3个计时器。最初,我启动了一个持续时间为2ms的系统棒计时器,然后在系统棒计时器的回调中,我使用api app_easy_timer()启动了一个内核计时器,时间为100ms。我继续调用这个函数,到目前为止,这个项目工作得很好。现在,当我像下面这样调用另一个5秒的内核计时器时,设备执行会突然停止。这是我正在使用的代码:
systick_register_callback (handle_2ms_timer);
空白abc(空白)
{
.....
systick_start (2000 1);
}
空白handle_2ms_timer(空白)
{
systick_stop ();
listen_interval = 50;
timer_listen_interval = app_easy_timer ((handle_listen_interval_timer listen_interval * 10));
user_adv ();
}
空白user_adv ()
{
struct gapm_start_advertise_cmd * cmd;
cmd = app_easy_gap_non_connectable_advertise_get_active ();
set_parser_data ();
set_beacon_data (cmd);
app_easy_gap_non_connectable_advertise_start ();
timer_adv_interval = app_easy_timer ((handle_adv_interval_timer adv_interval * 10));
}
执行没有到达任何一个内核计时器的回调处理程序。
当只调用systick和adv_interval_timer两个计时器时,设备的功能是正常的。当我同时引入第二个内核计时器时,问题就出现了。
提前谢谢,
wisilica
嗨wisilica,
同时设置两个内核定时器是没有问题的,你应该记住的几点是:
当你说你的代码执行停止时,它在哪里停止?
由于MT_dialog
嗨,对话框中,
我发现我为两个计时器设置的时间持续时间是相同的。这是设备执行停止的原因吗?如果我为两个计时器设置不同的持续时间,执行不会停止。
谢谢,
Wisilica
嗨wisilica,
不,这不应该发生,你将不得不检查代码在哪里停顿,在哪个函数中,以了解为什么会发生这种情况。
由于MT_dialog