我正在 8 位微 Controller 上使用 Microchip 的免费 TCP/IP(版本 4.55)堆栈。
我正在尝试重置堆栈,而不用 asm("RESET") 进行整个板重置。
有关如何重新启动此堆栈的任何想法。
更新
我通过以下步骤重置堆栈
- 将复位引脚切换至 Microchip 以太网芯片
- 调用 StackInit();
- 手动重置 UDP 通告状态机
这似乎可以从我遇到的致命 SPI 错误中恢复。
最佳答案
调用 StackInit()。该函数重新初始化所有子模块(TCP、UDP、SMTP 等)。它还会破坏您打开的所有 TCP 和 UDP 套接字,因此您必须重新打开要使用的套接字。
顺便说一句:我关注了 Microchip 论坛上的帖子。我的 TCP 堆栈也发生了奇怪的重置。最终导致堆栈溢出。将一些变量放在堆栈顶部。
#pragma udata stackoverflow = 0xE00
UInt32 StackUpperBound[8];
#pragma udata
在main()的开头初始化这些变量,并在开头放置断点。查看这些变量是否被覆盖。
关于embedded - 我可以在不重置开发板的情况下重置 Microchip TCP/IP 堆栈吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/611935/