协议栈2.5.1a
现象:宏定义已经定义,但是不保存参数,每次初始化读出的nv数据都是空,进入新入网流程。
仿真过程:当组网获得panID等信息时,仿真查看调用一函数
void ZDApp_NVUpdate( void )
{
#if defined ( NV_RESTORE )
osal_start_timerEx( ZDAppTaskID, ZDO_NWK_UPDATE_NV, ZDAPP_UPDATE_NWK_NV_TIME );
#endif
}
延时触发了ZDO_NWK_UPDATE_NV事件,在此事件中就存储了NV数据。
我仿真每次我都能进入ZDApp_NVUpdate函数,开启定时器。但是ZDApp_event_loop中收不到ZDO_NWK_UPDATE_NV事件,所以存不上,请教如何才能查出什么原因事件未传递么?
gaoyang9992006:
在这个预编译内设置一个LED的翻转指令,看看编译运行后进入到这个内没有,通过这种方式逐层深入判断。
da che:
回复 gaoyang9992006:
设置断点查看,已经执行了此延时触发函数,但是定时器好像停止了,永远也达不到计数值,所以不触发事件。不清楚怎么回事。
da che:
问题原因找到了,但是不知道为什么,请高手赐教!
问题原因:因在调试过程中,把UART改成了ISR模式,修改了DMA的使能,结果UART好用了,但是组网不保存。
解决方法:再次使能DMA,组网保存了。
带来的问题:什么原因必须使用DMA才能保存网络参数?如果UART我解决不了大数据量问题,只能使用ISR方式,怎么才能让两个同时好用?