embedded - 我可以在不重置开发板的情况下重置 Microchip TCP/IP 堆栈吗?

标签 embedded microchip

我正在 8 位微 Controller 上使用 Microchip 的免费 TCP/IP(版本 4.55)堆栈。

我正在尝试重置堆栈,而不用 asm("RESET") 进行整个板重置。

有关如何重新启动此堆栈的任何想法。

更新

我通过以下步骤重置堆栈

  1. 将复位引脚切换至 Microchip 以太网芯片
  2. 调用 StackInit();
  3. 手动重置 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/

相关文章:

c - 在嵌入式 MCU 应用程序中,在 for 循环中使用 uint_fast16_t 还是 size_t 更好?

c - 在 C 中所有使用 volatile 关键字的地方

audio - 我是否需要我的编解码器为 ALSA?

microcontroller - 处理器架构寄存器与 MCU 寄存器

c - sprintf 正在输出一些奇怪的数据

c - 位检查的 If 子句替换为使用 C 的位操作

c++ - 如何在 C++ 中从 void* 数组中有效地解压 float、int16、int32 等数据?

c - 为什么这不能在 C18 中编译?

c - 如何使这个 for 循环使 LED 变暗和变亮?

PicKit3 和 MPlabX(IDE 和 IPE)的连接失败错误