尝试在程序运行过程中修改协调器和终端的Panid,浏览了很多网上的资料都提到一下方法可行。
pan_id = 0x1122;
_NIB.nwkPanId = pan_id;
NLME_UpdateNV(0x01);
zb_SystemReset();//这里我用SystemReset替代。
实验过程我是在协调器上组建网络成功后5秒,调用上面的代码,每次组建网络成功后我会读取_NIB.nwkPanId的值通过串口打印。
但是实际每次读取的_NIB.nwkPanId的值并没有改成我希望的值。
当-DZDAPP_CONFIG_PAN_ID = 0xFFFF时,读取的_NIB.nwkPanId的值如手册上所说每次是一个随机值。
当-DZDAPP_CONFIG_PAN_ID = 0x1234,配置为一个非0xFFFF的值时,读取的_NIB.nwkPanId就是设定的固定值。
所以我有个疑问:
在调用SystemReset前可能修改了_NIB.nwkPanId的值,但是一旦调用复位函数,系统应该像第一次上电启动一样,更具-DZDAPP_CONFIG_PAN_ID的值来确定PanID,那我上次改变的PanID不就又无效了吗?
还是说调用上面这段代码需要添加其他的预编译选项吗?
还希望有大神帮我解答一下。