微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > HOLD_AUTO_START 每次上电必须触发一下吗?

HOLD_AUTO_START 每次上电必须触发一下吗?

时间:10-02 整理:3721RD 点击:

HOLD_AUTO_START 是个编译选项,目前是每次上电必须设置个事件触发一下,模块才会工作,比较麻烦。我想问一下能不能设置为模块第一次上电是HOLD_AUTO_START  ,在第二三次是自启动呢?

HOLD_AUTO_START即阻止网络的自启动,所以您只要编译了该选项就会一直阻止自启动

我有个想法是出厂的设备第一次是非自动,外部事件触发后设备启动方式就变为自动启动了,我该怎么实现?

你可以在节点入网,写一参数到NV里面,自己定义一个NV的item。

在重新启动以后,可以去这个NV里面都数据,如果是已经加过网的,那么就自动启动了。

在下面的函数

void ZDApp_Init( uint8 task_id )

/ Start the device?
if ( devState != DEV_HOLD )
{
ZDOInitDevice( 0 );
}
else
{
ZDOInitDevice( ZDO_INIT_HOLD_NWK_START );
// Blink LED to indicate HOLD_START
HalLedBlink ( HAL_LED_4, 0, 50, 500 );
}

在上面的代码的前面加上

uint8 *restoreInitState = osal_mem_alloc(1);
osal_nv_read(NV_STORE_ZDO_INIT, 0, 1, restoreInitState);
if(*restoreInitState == TRUE)
{
devState = DEV_INIT;
}

osal_mem_free(restoreInitState);


NV_STORE_ZDO_INIT你可以自己去定义,在入网以后写进去就可以了。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top