This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
各位看官你好:
通过修改 zb_WriteConfiguration(ZCD_NV_EXTADDR,Z_EXTADDR_LEN,newExtAddr); 可以改变IEEE地址,但是不能再Programmer中读出来,而且在重新烧写程序后,mac地址又恢复了,怎样修改mac地址永久保存呢?通过程序修改Secondary 的IEEE地址呢?
坐等回复,谢谢!!!
zb_WriteConfiguration(ZCD_NV_EXTADDR,Z_EXTADDR_LEN,newExtAddr); 是把IEEE地址写到了Flash NV区域中,而不是把IEEE地址写到Flash Secondary IEEE地址区中,你用Programmer新的程序的时候,因为生成的Hex文件,存放Secondary 的IEEE的地址上数据又被重新擦除掉了,所以每次重新写程序以后,自己写的地址又不在了。
所以你有几种方法可以做
1) 每次在程序启动的时候,在下面的地址和offset下面写入数据,这个地址就是存放Secondary IEEE地址的
HAL_FLASH_IEEE_PAGE, HAL_FLASH_IEEE_OSET
2)利用Flash Programmer烧写好程序以后,利用Flash Programmer写Secondary IEEE地址
3)直接修改hex文件,把hex文件打开,然后在HAL_FLASH_IEEE_PAGE, HAL_FLASH_IEEE_OSET对应的地方,把8个字节的IEEE地址写上去,也可以。
建议你理解下,协议栈程序里面zmain_ext_addr(void)函数的处理逻辑。