主题中讨论的其他器件:SimpliciTI
大家好、
我在 AP HUB 示例应用的基础上构建了我的应用程序、问题在于、有时在软件复位后、AP 的射频功能会受到干扰。 它会停止接收任何数据包、但其他一切都可以正常工作。 (不过、我没有尝试 TX 是否仍然正常工作。) 无论如何、我得出的结论是、我的主程序会定期调用 SMPL_Receive、而 SMPL_Receive 则会调用 NWK_REQUEST_FRAME、在其中调用 NWK_QfindOldest。 因此、在 NWK_QfindOldest 中、函数会检查 (uType = wPtr -> fi_usage)是否发生故障、因为 sInFrameQ 中实际上有一个数据包(wPtr 指向它)、并且该数据包在 fi_usage 中有4个数据包。 FI_USAGETLAG 4为 FI_INUSE_TRANSITION。 此标志不应位于其他任何位置、但在 NWK_QMgmt.c 文件中此函数中的第328行和第391行之间除外。 此标志用于指示正在处理数据包。 在该函数的末尾、fi_usage 始终在某个点更改为 fi_inuse_until 或 fi_inuse_until。 因此、接收器队列现在已满(我使用的队列大小为1)、由于 fi_usage 为4、因此无法处理该队列、并且由于队列已满、无法接收新的数据包。 我不知道4在这里是怎么结束的。 有人有什么想法吗? 发生过这种情况吗?
Stefan Radunovic