我怎样才能知道DA14580'OS准备好了?

5个帖子/ 0新
最后一篇
溧阳
离线
最后一次露面:3个月3周前
专家
加入:2014-09-24 11:51
我怎样才能知道DA14580'OS准备好了?

嗨,对话框:

您可以看到,在操作系统准备好之前,我无法使用App_Timer_Set()和发送消息函数(例如:KE_MSG_SEND_BASIC())。

但我怎么知道操作系统就准备好了?

谢谢溧阳。

设备:
mt_dialog.
离线
最后一次露面:5天21小时前
职员
加入:2015-06-08 11:34
嗨溧阳,

嗨溧阳,

我不确定我不确定,你不能通过kernel_timer发送基本邮件,因为操作系统没有准备好?由于BLE开启,操作系统始终准备好。如果在BLE打开时设置您的计时器,则将提供从计时器发送的消息。也许你在没有打开时设置计时器,而计时器永远不会发生?

你能否检查这个常见问题解答也许它会帮助你http://support.dialog-semicondiondiondum/faq/how-use-ketimer-during-wakeu ...

谢谢mt_dialog.

溧阳
离线
最后一次露面:3个月3周前
专家
加入:2014-09-24 11:51
嗨,mt_dialog,

嗨,mt_dialog,

你是对的,自从BLE开启以来,操作系统始终准备好了。然后我可以使用定时器。
像往常一样,当DA重启时,在BLE之前,如果我使用计时器或发送消息,则将不会发生计时器,它没有效果。
但我的病情很特别。当DA重启时,在BLE开启之前,GPIO2外部中断到来,在GPIO2_Handler()中我发送消息然后发送程序中断。
该计划如下:

void gpio2_handler(void)
{
nvic_disableirq(gpio2_irqn);/ *①关闭中断* /

/ *
*外设域Si Down,那么这是唤醒过程。需要调用periph_init()。
* /
gbext2irqiscomeflg = true;/ *防重入开头LY150925 * /
if(getBits16(sys_stat_reg,per_is_down))
periph_init();
gbext2irqiscomeflg = false;/ *防重入防重入LY150925* /

global_int_stop();
/ *
*将ffo中数码先取出
* /
adxl362fiforead(adxl362databuf,fifo_num_set * 6);/ *②清除362 IRQ PIN * /
global_int_start();

#if(cfg_led_ctl)
if(led_unactive == __tgledctlhandler.eledactive){
setsleepon();
}
#endif // cfg_led_ctl.

//唤醒这里的ble
setbits32(gp_control_reg,ble_wakeup_req,1);// BLE醒来
app_ble_ext_wakeup_off();

ke_msg_send_basic(adxl362_wakeup_msg,task_app,task_app);

setword16(gpio_reset_irq_reg,1 <<(GPIO2_IRQN-GPIO0_IRQN));/ *③清除MCU IRQ PIN * /

nvic_enableirq(gpio2_irqn);/ *④打开中断* /
}

该计划将突破。这是真的吗?

谢谢溧阳。

mt_dialog.
离线
最后一次露面:5天21小时前
职员
加入:2015-06-08 11:34
嗨溧阳,

嗨溧阳,

在您的中断处理程序中,您唤醒了BLE核心,然后发送消息。通常,消息应该在队列中,并且操作系统会在准备就绪后立即服务。如果您面临任何概要,可能是因为中断例程和您调用的INT_START / STOP。如果您在ISR中设置标志并在App_Async_trm函数中处理中断事件,可能会更好。

谢谢mt_dialog.

溧阳
离线
最后一次露面:3个月3周前
专家
加入:2014-09-24 11:51
嗨,mt_dialog,

嗨,mt_dialog,

好的,谢谢你的帮助。

谢谢溧阳。

主题锁定