日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 芯聞號(hào) > 充電吧
[導(dǎo)讀]1.對(duì)工程設(shè)置NV_RESTORE = TRUE2.使用如下代碼:??pan_id?=?u16NewPanid;//你想要的ID ??_NIB.nwkPanId?=?u16NewPanid; ??//

1.對(duì)工程設(shè)置NV_RESTORE = TRUE

2.使用如下代碼:

??pan_id?=?u16NewPanid;//你想要的ID
??_NIB.nwkPanId?=?u16NewPanid;
??//_NIB.nwkLogicalChannel?=?;
??NLME_UpdateNV(0x01);
??//HAL_SYSTEM_RESET();
??SystemReset();


即可實(shí)現(xiàn)ZigBee終端切換PANID來連接不同PANID的協(xié)調(diào)器。


貌似下面這樣也可以實(shí)現(xiàn)同樣的功能:


/*
?*?Restore?network?memory?items?from?NV.
?*/
extern?byte?NLME_RestoreFromNV(?void?);

/*
?*?Write?network?items?to?NV.
?*????????enables?-?bit?mask?of?items?to?save:
?*?????????????????????NWK_NV_NIB_ENABLE
?*?????????????????????NWK_NV_DEVICELIST_ENABLE
?*?????????????????????NWK_NV_BINDING_ENABLE
?*?????????????????????NWK_NV_ADDRMGR_ENABLE
?*/
void?NLME_UpdateNV(?byte?enables?);

/*以上來自NWK的NLMEDE.h頭文件,但具體實(shí)現(xiàn)的代碼我沒找到*/

???osal_nv_item_init(ZCD_NV_PANID?,?sizeof(uint16)?,?NULL);??
??u8BackCode?=?osal_nv_write(?ZCD_NV_PANID?,?0?,?sizeof(uint16)?,?&pan_id);???//寫Flash中和PANID存儲(chǔ)有關(guān)的部分??
??
??if(u8BackCode?==?ZSUCCESS)
??{
????NLME_UpdateNV(0x01);????//指示將網(wǎng)絡(luò)的相關(guān)信息寫入Flash中
????HAL_SYSTEM_RESET();?????//重啟系統(tǒng)
???????NLME_RestoreFromNV();//重啟后才會(huì)啟用新的PAN_ID,不然只是修改了NV里面的數(shù)據(jù)。

? }





3.對(duì)于NV_RESTORE的壞處


加入這個(gè)宏定義好處肯定是有的,但是問題也來了,如果終端想加入別的協(xié)調(diào)器網(wǎng)絡(luò),既是PANID和頻道都一樣,

不管重啟多少次都不會(huì)加入新的協(xié)調(diào)器中,那該怎么辦呢?

其實(shí)TI考慮到這個(gè)問題了,下面是官方的說明

? application wants to delete the stored NV information It just needs to set the ZCD_NV_STARTUP_OPTION as explained below and do a reset.?

"If the application would like to force a "new" join, the application should set the ZCD_STARTOPT_DEFAULT_NETWORK_STATE bit in the ZCD_NV_STARTUP_OPTION NV item before calling this function. "New" join means to not restore the network state of the device. Use zgWriteStartupOptions() to set these options 。


zgWriteStartupOptions(ZG_STARTUP_SET,?ZCD_STARTOPT_DEFAULT_NETWORK_STATE);


zGlobals.c中有這兩個(gè)函數(shù),第二個(gè)就是上面所用的函數(shù)

uint8?zgReadStartupOptions(?void?)??//啟動(dòng)時(shí)讀取ZCD_NV_STARTUP_OPTION的值

uint8?zgWriteStartupOptions(?uint8?action,?uint8?bitOptions?)??//修改ZCD_NV_STARTUP_OPTION的值




NV_INIT保存在nv的內(nèi)容主要是網(wǎng)絡(luò)或者節(jié)點(diǎn)的配置參數(shù),在節(jié)點(diǎn)運(yùn)行中這些參數(shù)很少變化或者幾乎不會(huì)有變化。NV_INIT選項(xiàng)保存的所有參數(shù)可以在結(jié)構(gòu)體zgItemTable中查看到。

NV_RESTORE選項(xiàng)保存的內(nèi)容主要是節(jié)點(diǎn)運(yùn)行過程中的狀態(tài)量,借助這個(gè)特性,節(jié)點(diǎn)在掉電或者復(fù)位之后不需要無線電通訊就可以恢復(fù)到之前的網(wǎng)絡(luò)連接狀態(tài)。NV_RESTORE保存的內(nèi)容主要有網(wǎng)絡(luò)層數(shù)據(jù)庫(kù)NIB、設(shè)備關(guān)聯(lián)表、綁定表、路由表等。


4.關(guān)于ZigBee組網(wǎng)的一些函數(shù):

zb_ReadConfiguration()

zb_WriteConfiguration()

zb_GetDeviceInfo()



這三個(gè)函數(shù)貌似在2.5的協(xié)議棧中已經(jīng)被封裝了,找不到了。


osal_nv_item_init()

osal_nv_write()

osal_nv_read()



這三個(gè)函數(shù)可以去初始、寫、讀ZigBee中NV中的數(shù)據(jù),NV中數(shù)據(jù)斷電不擦除


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉