内核定时器可以在什么情况下运行

6个员额/ 0个新员额
最后发表
fengmailx
离线
最后看到:4年8个月前
加入:2014-11-21 03:48
内核定时器可以在什么情况下运行

DA14580内核定时器可以在什么情况下运行?激活模式,扩展睡眠模式,深度睡眠模式,BLE断开,连接和更多..

有时调用ke_timer_set(),但为什么它不工作?
它不能撞上
app_timer_handler (ke_msg_id_t const是否,
空白const *参数,
ke_task_id_t const dest_id,
ke_task_id_t const src_id)

当GPIO从深度睡眠模式中唤醒并立即调用ke_timer_set()时,将会发生。

有些朋友知道吗?

谢谢大家

JE_Dialog
离线
最后看到:3个月2个星期前
工作人员
加入:2013-12-05 14:02
你好fengmalix,

你好fengmalix,

Ke_timer_set不能用于从休眠中唤醒设备,需要使用app_timer_set。

当DA14580处于扩展/深度睡眠模式时,可以使用app_timer_set。

关于这个问题,有几个很好的线程:如果您搜索app_timer_set,就会找到几个线程,包括下面的线程。

http://support.dialog-semiconductor.com/wakeup-sleep-timeout

http://support.dialog-semiconductor.com/apptimerset

http://support.dialog-semiconductor.com/blinking-led-managed-under-interrupt

BR JE_Dialog

fengmailx
离线
最后看到:4年8个月前
加入:2014-11-21 03:48


1、这里是app_timer_set,为什么app_timer_set可以从休眠中唤醒设备,而直接调用ke_timer_set不能唤醒设备?
App_timer_set也调用ke_timer_set…

Void app_timer_set(ke_msg_id_t const timer_id, ke_task_id_t const task_id, uint16_t delay)

//延迟不能超过允许的最大延迟
如果延迟> KE_TIMER_DELAY_MAX)

延迟= KE_TIMER_DELAY_MAX;


//延迟不应该为零
Else if(delay == 0)

延迟= 1;

ke_timer_set (timer_id task_id、延迟);

2、我没有使用app_timer_set唤醒BLE,我只是使用GPIO唤醒它,在BLE中GPIO的唤醒时间是如何确保它正确运行app_timer_set?
例如:
我有一个键唤醒BLE, app_button_press_cb()调用app_timer_set(), app_timer_handler使用LED闪烁,但有时LED不能闪烁,我发现它不能运行到app_timer_handler(),代码如下:

如果(app_ble_ext_wakeup_get ())

/ /唤醒祝福

#如果(EXT_SLEEP_ENABLED)
app_set_extended_sleep ();
# elif (DEEP_SLEEP_ENABLED)
app_set_deep_sleep ();
其他#
app_disable_sleep ();
# endif

SetBits32 (GP_CONTROL_REG BLE_WAKEUP_REQ 1);
app_ble_ext_wakeup_off ();

ke_msg_send_basic (APP_WAKEUP_MSG TASK_APP, NULL);

app_timer_set (APP_BLE_LED_TIMER TASK_APP 100);
app_button_enable ();

PY_Dialog
离线
最后看到:3年2个月前
工作人员
加入:2014-08-25“
嗨fengmailx,

嗨fengmailx,

App_timer_set实际上调用ke_timer_set向内核发送延迟消息。所以当你调用它时,你需要确保内核是活动的。
请将app_timer_set(APP_BLE_LED_TIMER, TASK_APP, 100)放在消息处理器int app_wakeup_handler()中,以确保它工作。

的问候!
PY

fengmailx
离线
最后看到:4年8个月前
加入:2014-11-21 03:48
好吧,

好吧,
我认为这是个好主意。

由于对话框,

fengmailx
离线
最后看到:4年8个月前
加入:2014-11-21 03:48
你好对话小组

你好对话小组
我有一些关于app_timer_set()的问题,
如果我在main_fun中重复调用app_timer_set(),例如:我调用app_timer_set(APP_KEY_MSG, TASK_APP, 10);但是当它不进入内核定时器处理器时,调用函数app_timer_set(APP_KEY_MSG, TASK_APP, 10);一次。会发生什么?
2\现在,我想检查键按下时,唤醒计时器唤醒它,我需要使用内核计时器在app_asynch_proc(),我如何确保内核是活动的?

谢谢大家