处理应用程序(用户)任务中的消息
DA14585.
3个星期前
处理应用程序(用户)任务中的消息
张贴了moguilevski.60分 3回复你好pm_dialog,
我正在研究一个应用程序,允许通信DA14585与UART的另一个ARM处理器通信。应该使用BLE广告同时进行通信,其中在广告事件之间启用了扩展睡眠模式时的间隔3秒。我使用SDK的鞍骨示例作为应用程序的BLE相关部分的基础。在传入消息的情况下,DA14585由中断激活,触发回调函数:
void app_wkup_irq_cb(void){setbits16(wkup_ctrl_reg,wkup_enable_irq,1);if(getBits16(sys_stat_reg,per_is_down)){periph_init();} KE_MSG_SEND_BASIC(incoming_uart_msg,task_app,0);app_wkup_irq_init();}
该函数将消息发送到应用程序任务(Task_App),其中应该将UART消息的接收和处理作为user_catch_rest_hndl()中的案例启动。当立即执行唤醒回调函数时,仅在随后的广告事件之后仅发生接收和处理。
问题:在发生下一个广告事件之前,是否有任何方法处理发送到应用程序任务的消息 - 然后返回扩展睡眠模式?
在通过以下函数将消息发送到Task_App之前,我试图停止广告过程:
app_easy_timer_cancel(app_add_data_update_timer_used);app_easy_gap_advertise_stop();
而不是在User_App_Adv_Undirect_Complete()中重新启动广告,但此操作不起作用。
接受答案!
1周前
嗨moguilevski,
我在这个论坛门票上回复了你:
谢谢,PM_DIALOG.
3个星期前
嗨moguilevski,
谢谢你在线问题。
当DA14585正在睡眠时,所有外围块都断电(包括UART)。当芯片处于扩展睡眠模式时,不可能具有UART活动。
因此,就我可以从您的帖子中理解,您正在使用Wake = Up控制器,以便在UART上有传入数据时唤醒设备。
如果设备处于活动模式,则可以立即处理数据。我假设您可以在唤醒回调中进行 - app_wkup_irq_cb()。
请查看使用唤醒控制器的SDK的BLE_APP_SLEEPMODE示例,以便通过GPIO触发唤醒。一旦设备唤醒,您可以处理回调中的数据。
您使用的是HW流量控制(RTC / CTS)吗?
谢谢,PM_DIALOG.