我问的休眠问题是不是太低级了高手都不愿回答,请高手指教!
时间:10-02
整理:3721RD
点击:
我的问题是,想让终端休眠,代码如下:
if ( events & SAMPLEAPP_SEND_PERIODIC_MSG_EVT )
{
SampleApp_Send_P2P_Message();
halSleep(9000);
osal_start_timerEx( SampleApp_TaskID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT,
3000 );
return (events ^ SAMPLEAPP_SEND_PERIODIC_MSG_EVT);
}
return 0;
我只加了一句halSleep(9000);让系统休眠9秒,应该每12(9+3)秒执行一次SampleApp_Send_P2P_Message(),但经测量是每9秒执行一次。请指教。谢谢!
如果按照你这样,直接调用HalSleep函数,按照正常的逻辑流程,只是开启了一个9s的睡眠定时器,也有可能没有开启成功,因为你底层将会有射频数据发送,而休眠时,肯定是不允许发送数据的。
从你代码中的意图来看,结合OSAL的休眠机制,系统休眠时间只取决于当期所有定时任务的最小超时时间。你可以让它9s后再执行,但你不能保证这9s内始终是休眠状态,除非你没有其他任务执行。
以上是我的理解,希望能够帮助到你。
谢谢!可是还是不太明白,请继续指导!