工具/软件:
您好、
我使用 zed_sw 样片测试关断模式。 我要做的是、当开关丢失父级超过 10 秒时、它将切换到 SHUTDOWN 模式、并可以由 BTN-1 (DIO15) 唤醒。
我配置了 LED_GREEN、在尝试重新加入网络时它将闪烁、在发送第一个重新加入请求时 LED_RED 将亮起。
#if ZG_BUILD_ENDDEVICE_TYPE
case BDB_COMMISSIONING_PARENT_LOST:
if(bdbCommissioningModeMsg->bdbCommissioningStatus == BDB_COMMISSIONING_NETWORK_RESTORED)
{
//We did recover from losing parent
if (UtilTimer_isActive(&EndDeviceShutdownClkStruct))
{
UtilTimer_stop(&EndDeviceShutdownClkStruct);
}
LED_setOff(gGreenLedHandle);
LED_setOff(gRedLedHandle);
}
else
{
//Parent not found, attempt to rejoin again after a fixed delay
LED_toggle(gGreenLedHandle);
UtilTimer_setTimeout( EndDeviceRejoinClkHandle, SAMPLEAPP_END_DEVICE_REJOIN_DELAY );
UtilTimer_start(&EndDeviceRejoinClkStruct);
if (!UtilTimer_isActive(&EndDeviceShutdownClkStruct))
{
LED_setOn(gRedLedHandle, 100);
UtilTimer_setTimeout(EndDeviceShutdownClkHandle, SAMPLEAPP_END_DEVICE_SHUTDOWN_DELAY);
UtilTimer_start(&EndDeviceShutdownClkStruct);
}
}
break;
#endif
处理 shutdown 的代码。
if ( appServiceTaskEvents & SAMPLEAPP_END_DEVICE_SHUTDOWN_EVT )
{
if (UtilTimer_isActive(&EndDeviceRejoinClkStruct))
{
UtilTimer_stop(&EndDeviceRejoinClkStruct);
}
if (UtilTimer_isActive(&EndDeviceShutdownClkStruct))
{
UtilTimer_stop(&EndDeviceShutdownClkStruct);
}
LED_setOff(gRedLedHandle);
LED_setOff(gGreenLedHandle);
IOCIOShutdownSet(CONFIG_GPIO_BTN_LEFT_INPUT, IOC_WAKE_ON_LOW);
PowerCC26X2_sysctrlShutdownWithAbort();
appServiceTaskEvents &= ~SAMPLEAPP_END_DEVICE_SHUTDOWN_EVT;
}
到目前为止、在父级丢失 10 秒后、开关可以成功进入 SHUTDOWN 模式、并能够通过按 BTN-1 唤醒。 但唤醒后(仍然父级丢失)、它会尝试永远重新加入网络(由 PPK2 检查)、我看不到 LED_GREEN 闪烁
此 LED_GREEN 在函数 静态 void zclSampleSw_initialization (void) 中进行配置并设置。 因此我认为它应该在从 SHUTDOWN 模式唤醒后开启。
static void zclSampleSw_initialization(void)
{
...
LED_Params ledParams;
LED_Params_init(&ledParams);
gGreenLedHandle = LED_open(CONFIG_LED_GREEN, &ledParams);
gRedLedHandle = LED_open(CONFIG_LED_RED, &ledParams);
LED_setOn(gGreenLedHandle, LED_BRIGHTNESS_MAX);
LED_setOff(gRedLedHandle);
...
}
从 SHUTDOWN 模式唤醒后、MCU 是否以主代码启动? 如果没有、则在代码开始运行的位置。 您能否提供正确的方法来手动将器件置于关断模式?