1

如何在 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;
4

2 回答 2

2

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

于 2013-09-25T12:12:55.717 回答
0

您必须根据文件 TCPIP WIFI_GPIO32.h 中的应用程序取消注释这些行“

#define STACK_USE_DHCP_CLIENT           // Dynamic Host Configuration Protocol client for obtaining IP address and other parameters
//#define STACK_USE_DHCP_SERVER         // Single host DHCP server

然后将启用该宏下的相应代码

于 2016-09-28T06:46:44.960 回答