c - 在 Pic32 中启用 DHCP

标签 c embedded

如何在Pic32中启用DHCP?我正在尝试使用以下代码。我使用了 TCP/IP Stack v5.31,当此函数运行时,会出现我的默认 ip,但它始终保持不变

AppConfig.Flags.bIsDHCPEnabled = TRUE;
    AppConfig.Flags.bInConfigMode = TRUE;
    memcpypgm2ram((void*)&AppConfig.MyMACAddr, (ROM void*)SerializedMACAddress, sizeof(AppConfig.MyMACAddr));
    AppConfig.MyIPAddr.Val = MY_DEFAULT_IP_ADDR_BYTE1 | MY_DEFAULT_IP_ADDR_BYTE2<<8ul | MY_DEFAULT_IP_ADDR_BYTE3<<16ul | MY_DEFAULT_IP_ADDR_BYTE4<<24ul;
    AppConfig.DefaultIPAddr.Val = AppConfig.MyIPAddr.Val;
    AppConfig.MyMask.Val = MY_DEFAULT_MASK_BYTE1 | MY_DEFAULT_MASK_BYTE2<<8ul | MY_DEFAULT_MASK_BYTE3<<16ul | MY_DEFAULT_MASK_BYTE4<<24ul;
    AppConfig.DefaultMask.Val = AppConfig.MyMask.Val;
    AppConfig.MyGateway.Val = MY_DEFAULT_GATE_BYTE1 | MY_DEFAULT_GATE_BYTE2<<8ul | MY_DEFAULT_GATE_BYTE3<<16ul | MY_DEFAULT_GATE_BYTE4<<24ul;
    AppConfig.PrimaryDNSServer.Val = MY_DEFAULT_PRIMARY_DNS_BYTE1 | MY_DEFAULT_PRIMARY_DNS_BYTE2<<8ul  | MY_DEFAULT_PRIMARY_DNS_BYTE3<<16ul  | MY_DEFAULT_PRIMARY_DNS_BYTE4<<24ul;
    AppConfig.SecondaryDNSServer.Val = MY_DEFAULT_SECONDARY_DNS_BYTE1 | MY_DEFAULT_SECONDARY_DNS_BYTE2<<8ul  | MY_DEFAULT_SECONDARY_DNS_BYTE3<<16ul  | MY_DEFAULT_SECONDARY_DNS_BYTE4<<24ul;

最佳答案

网络上是否有运行dhcp服务器的路由器?您正在处理 dhcp 请求和 dhcp 响应数据包吗?基本上,您的 PIC32 板应该能够在网络上发送 dhcp 发现数据包,然后 dhcp 响应应该来自服务器,之后应该有 dhcp 请求数据包和 ACK 数据包,请参见 rfc ,如果所有这些步骤都在执行,那么你应该成功获得了新的IP地址。如果不是,则应该发生超时并且应该保留静态 IP 地址

关于c - 在 Pic32 中启用 DHCP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19004151/

相关文章:

c - Intel/ARM 内在函数等价

arrays - 能否在一行中(重新)设置数组的所有值(在初始化之后)?

FPGA 设计的配置管理

c++ - 嵌入式应用程序从 std::string 切换到 std::wstring?

Eclipse:无法运行程序 "cs-make":启动失败

c - 为什么 sizeof run on struct 必须有括号

c - 需要 InvenSenses 运动驱动程序的解释

c - 在嵌入式 C 中使用 RTOS 处理多任务文件系统的最佳方法?

linux - 如何在 linux 内核模块中添加周期性定时器回调

c - 帮我找出错误