复位后APP_EASY_TIMER不工作

5个帖子/ 0新
最后一篇
wisilica
离线
最后一次露面:2个月前1年
加入:2015-03-17 08:16
复位后APP_EASY_TIMER不工作

嗨对话框,

我工作的ble_app_peripheral项目。我发出特定历时的app_easy_timer。在此期间该装置,转换从观察者到广播,反之亦然,很多次,都针对其发出数gapm_reset_commands的作用。产生的问题是,定时器的手柄是没有得到调用。请建议为同一解决方案。

提前致谢,
Wisilica.

设备:
mt_dialog.
离线
最后一次露面:6个月2周前
职员
加入:2015-06-08 11:34
嗨Wisilica,

嗨Wisilica,

你怎么知道计时器的处理程序没有被调用?我想,你是一个特定的角色开始时设置一个计时器,然后从处理您发出GAPM_RESET命令,然后用新角色的beggining再次启动定时器。那么究竟哪里在你的代码,你正在发行的计时器?例如,如果计时器在.app_on_init()回调函数然后GAPM_RESET是,函数后发出被设置并且在内核队列中的所有消息被刷新包括定时器和在一般GAPM_RESET后所有该命令之前发出的定时器被刷新。所以,你必须检查计时器确实设置和计时器结束前一GAPM_RESET不会被调用。

谢谢mt_dialog.

wisilica
离线
最后一次露面:2个月前1年
加入:2015-03-17 08:16
你好,

你好,

该方案是定时器1和定时器2的发言权3秒和500毫秒,该设备的通告数据包的时间开始。的定时器2复位间隙回调并切换到扫描模式。在扫描模式中,定时器2 500毫秒,在回调复位间隙创建并切换到进阶模式。因此定时器2将扫描和广告之间交替。在定时器1的回调,计时器2被删除和设备停止广告并进入睡眠。
在此,定时器2将正常工作,如被角色转换之后创造了它,并创建下一次角色转换完成后。

从你的反应,如果计时器被刷新每当差距角色转换发生,我们怎么能跟踪时间?是否有任何手段来识别,多少时间定时器流逝剩余?我们有一个要求,跟踪时间的作用交换机之间。

mt_dialog.
离线
最后一次露面:6个月2周前
职员
加入:2015-06-08 11:34
嗨Wisilica,

嗨Wisilica,

当发生GAPM_RESET整个堆栈reseted,为了让您配置设备在不同的角色,所以计时器被刷新我已经提到。从场景描述(正确的我,如果我得到这个错误的),你想作为一个中央和外围设备(因而广告和扫描)这两个角色之间切换,每500ms,共3秒钟操作。我看到你的问题是,定时器1切换过程中冲洗掉,所以你的目标是到设备的秒3的操作才去睡觉。因此,对于这一点,你有以下几种选择:

  • 算上切换,如果每一个角色应该持续500毫秒,那么你可以指望3秒对应6个开关,您已经切换,例如倍量,我想这是最可靠的方式。
  • 另一件事,你可以做的是读取和存储的基本时间计数器的值(lld_evt_time_get())的切换发生之前(让你不切换后获得零),并检查累计值,当你即将开关,如果比你预定的时间,你可以把你的设备休眠更大。

谢谢mt_dialog.

Chris0409.
离线
最后一次露面:4年2个月前
加入:2017年1月11日05:59
嗨,wisilica,

嗨,wisilica,
我有一个相同的情况下,你这就需要改变观察者和perpheral的作用。我用一个按钮做触发器复位动作,并发送一个复位cmd并重新配置设备的作用,但是当堆栈始终在NMI_HandlerC坠毁,所以我觉得有什么不对我的过程中,你可以分享你代码来我参考,我一直搞不清楚这个问题的时候,非常感激!谢谢你,我的邮箱是gjhe0409@163.com