我用的TI官网的例子,没有对代码进行任何改动,只是删除了HOLD_AUTO_START定义,配置成自启动模式。
但是经调试发现终端设备程序执行一会就进入软复位,一直反复这个过程。
求解
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.
如果使用HOLD_AUTO_START选项,那么本工程就会禁止自动启动ZDApp事件处理循环中的ZDO_NETWORK_INIT事件,也就是上电后不自动调用ZDOInitDevice(),需要通过外部事件,或者用户自己调用这个函数,下面我们看看定义了这个函数后,程序的流程是怎么样的。
启动过程:
1、int main( void )中的 osal_init_system();
2、 osal_init_system();中的 osalInitTasks();
3、osalInitTasks();中的 ZDApp_Init( taskID++ );和SerialApp_Init( taskID );
4、void ZDApp_Init( uint8 task_id )--- ZDOInitDevice( uint16 startDelay )----ZDApp_NetworkInit( uint16 delay )
5、UINT16 ZDApp_event_loop( uint8 task_id, UINT16 events )中的 ZDO_StartDevice( (uint8)ZDO_Config_Node_Descriptor.LogicalType, devStartMode,
DEFAULT_BEACON_ORDER, DEFAULT_SUPERFRAME_ORDER );

那怎么设置成自启动呢?不定义HOLD_AUTO_START就可以了吗?还有什么其它地方需要修改吗?
自启动的话不预编译HOLD_AUTO_START即可