我最终的解决方案,红色部分缺一不可。
uint16 panID;
zb_ReadConfiguration( ZCD_NV_PANID, sizeof(uint16), &panID );
if(panIDSetValue==panID-1)
panIDSetValue=panID+1;
if(_NIB.nwkPanId != panIDSetValue||panID!=panIDSetValue)[
panID=panIDSetValue;
panIDSetValue++;
if(panIDSetValue==0x3FFF)
panIDSetValue=0x0001;
//save the panid value for APP
osal_nv_write( ZD_NV_REMOTE_CONTROL_STUDYNUM,0, sizeof(uint16), &panIDSetValue );
//save the panid value for Zigbee Stack
zb_WriteConfiguration( ZCD_NV_PANID, sizeof(uint16), &panID );
_NIB.nwkPanId = panID;
NLME_UpdateNV(NWK_NV_NIB_ENABLE);
#ifdef LCD_SUPPORTED
HalLcdWriteStringValue("New PANID",panID,16, lcdLineCounter );
lcdLineCounter++;
lcdLineCounter=((lcdLineCounter%8)<3)?(3):(lcdLineCounter%8);
#endif
//for Router, can not connetct cordevice, after cordevice's PANID has modify
zgWriteStartupOptions(ZG_STARTUP_SET, ZCD_STARTOPT_DEFAULT_NETWORK_STATE);
SystemResetSoft();
]