原版例程中500ms唤醒一次,代码是这样的:
/* Save the current radio time */RF_cmdPropRxSniff.startTime = RF_getCurrentTime();/* Enter main loop */while(1){/* Set next wakeup time in the future */RF_cmdPropRxSniff.startTime += WOR_WAKE_UP_INTERVAL_RAT_TICKS(interval);}
如果我代码这样写,和上面的效果一样吗?能不能确保RF能按精确的间隔唤醒?
/* Enter main loop */
while(1)
{
if(Current_Mode == Mode_LowPower)
{
/* Set next wakeup time in the future */
RF_cmdPropRxSniff.startTime = RF_getCurrentTime() + WOR_WAKE_UP_INTERVAL_RAT_TICKS(wakeTime);
/* Enter main loop */while(1){if(Current_Mode == Mode_LowPower){/* Set next wakeup time in the future */RF_cmdPropRxSniff.startTime = RF_getCurrentTime() + WOR_WAKE_UP_INTERVAL_RAT_TICKS(interval);}
Alvin Chen:
你加这个判断的作用是什么呢?
当你设定了wakeup time之后没有任务就自动进入低功耗了。
user4959119:
回复 Alvin Chen:
忘了去掉了,您可以忽略它,两种方式的效果一样吗?
Alvin Chen:
回复 user4959119:
功能上没有太大区别,本质上有区别; startTime for the transmission demo中保证了每次间隔传输的间隔。 RF_getCurrentTime()是当前时间可能有所不同了