我必须在睡眠模式下测量时间,所以我在睡眠模式下使用app_timer_set功能
计时器处理程序的代码
int timer_handler()
{
应用程序_禁用_睡眠();
应用程序定时器设置(翻转主定时器,任务应用程序,2);
time_n=lld_evt_time_get();
if(ke_state_get(TASK_APP)==APP_CONNECTED)
{
调试数据\u t调试数据;
debug_data.data_float=(time_n-time_o)*0.625;
attmdb_att_update_值((BAS_IDX_DEBUG_LOG_VAL+bass_env.shdl[0]),4,0,(uint8_t*)DEBUG_data.data_字节);
prf_服务器发送事件((prf_env_struct*)和bass_env,false,(BAS_IDX_DEBUG_LOG_VAL+bass_env.shdl[0]);
}
时间=时间;
应用程序设置扩展睡眠();
返回(已消耗的热量);
}
我试图使用lld_evt_time_get()函数验证计时。
在这里,我注意到以下事情:
如果连接间隔>定时器延迟-----则定时器处理程序以不同的时间间隔(不是函数调用定义的时间间隔)执行,即(time-time)*0.625非常数
如果连接间隔<计时器延迟-----则计时器处理程序以等于连接间隔的间隔执行,即(time\n-time\u o)*0.625=连接间隔
计时器没有以正确的间隔执行这是一个大问题,因为我们需要一个计时器在睡眠模式下工作(它用于从心率传感器查找RR间隔)
请尽快回复
谢谢
莫希特·马赫什瓦里
设备:
你好,mohit3112,
内核计时器的错误为-20ms到0。您将无法达到所需的20ms时间分辨率。
谢谢你的对话
严重的错误为-20ms到0,为什么称之为内核\u定时器,然后可以称之为内核\u抖动