嗨,对话框的团队,
我在ble_app_peripheral项目中使用了3个计时器。最初,我启动一个持续时间为2ms的systick计时器,然后在systick计时器的回调中,通过使用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