嗨对话小组,
我在我的ble_app_peripheral项目中使用了3个定时器。最初,我开始一个持续时间2ms的Systick计时器,然后在Systick计时器的回调中,我使用100ms的API App_easy_Timer()启动内核定时器。我继续打电话给这个函数,这个项目的工作正常。现在,当我称为5秒的另一个内核计时器如下,设备执行突然停止。这是我正在使用的代码:
systick_register_callback(handle_2ms_timer);
void abc(空白)
{
.....
systick_start(2000,1);
}
void handle_2ms_timer(void)
{
systick_stop();
listent_interval = 50;
timer_listen_interval = app_easy_timer((listen_interval * 10),handle_listen_interval_timer);
user_adv();
}
void 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_add_interval = app_easy_timer((adv_interval * 10),handle_adv_interval_timer);
}
执行不会到达内核定时器的回调处理程序。
当仅调用2个定时器时,Systick和Adv_Interval_Timer时,设备功能很好。当我同时引入第二个内核计时器时,问题开始。
提前致谢,
Wisilica.
嗨Wisilica,
在设置两个内核定时器时没有问题,同时,您应该记住的几件事是:
当你说你的代码执行停止时,它停止在哪里?
谢谢mt_dialog.
嗨对话框,
我发现我为定时器设置的持续时间是相同的。这是设备执行停止的原因吗?如果我为定时器设置不同的时间持续时间,则执行不会停止。
谢谢,
Wisilica.
嗨Wisilica,
不,这不应该发生,你必须检查一下代码摊位的位置,在哪个函数中,为了看看为什么发生这种情况。
谢谢mt_dialog.