Hi,根据默认例程
#define WOR_WAKEUPS_PER_SECOND 2
while(1)
{
PIN_setOutputValue(ledPinHandle, Board_PIN_BTN1, !PIN_getOutputValue(Board_PIN_BTN1));
/* Set next wakeup time in the future */
RF_cmdPropRxSniff.startTime += WOR_WAKE_UP_INTERVAL_RAT_TICKS(WOR_WAKEUPS_PER_SECOND);
/* Schedule RX */
RF_runCmd(rfHandle, (RF_Op*)&RF_cmdPropRxSniff, RF_PriorityNormal, &callback, RF_EventRxEntryDone);
/* Log RX_SNIFF status */
switch(RF_cmdPropRxSniff.status) {
case PROP_DONE_IDLE:
/* Idle based on RSSI */
worStatistics.doneIdle++;
break;
………
}
在WOR执行过程中,按我的理解是主MCU定期500ms醒来执行一次sniff命令来检测空中命令。1、在这500ms过程中,主MCU是开启了休眠吗? 进入IDLE?进入休眠的操作是在哪里的位置执行的(代码位置)
2、请问500ms定期醒来执行sniff命令时,此时是从while(1)起始位置开始执行,那么Board_PIN_BTN1为何不能被翻转电平?而只有在接收到发送方的数据后才能翻转电平。是没有收到数据时MCU某些电源没有被打开吗?这些逻辑代码是否在哪个文件中可以找到?
Best regards,
ln
Viki Shi:
主MCU是进入了standby,但不是500ms,具体的时间计算及解释请看论坛类似帖: e2e.ti.com/…/2867495
user4784951:
回复 Viki Shi:
非常感谢您的回复
我的问题主要不是问500ms的问题,
而是在执行wor过程中,MCU进入了standby,那么我其他任务就无法实时执行,能否做成将这个sniff命令放在定时器里定期执行,主MCU不进入standby,而在我其他任务执行完成之后再调用命令或API触发进入standby或者idle等模式中