سلام من این کد رو برای ping کردن میکرو LPC1768 اجرا کردم ولی با وجود فعال کردن DHCP میکرو IP رو دریافت نمیکنه.
تو نمونه مثال های سایت هم از DHCP استفاده نشده و IP به صورت ایستاتیک به میکرو داده شده .
کسی DHCP رو فعال کرده به صورتی که در DHCP IP Pool Summary مودم بشه میکرو رو دید و همچنین اون رو ping کرد
تو نمونه مثال های سایت هم از DHCP استفاده نشده و IP به صورت ایستاتیک به میکرو داده شده .
کسی DHCP رو فعال کرده به صورتی که در DHCP IP Pool Summary مودم بشه میکرو رو دید و همچنین اون رو ping کرد
کد:
/****************************PING MicroController ******************************/ #include <LPC17xx.H> #include <RTL.h> #include <stdio.h> #include <Net_Config.h> BOOL tick ; U32 dhcp_tout; extern LOCALM localm[]; /* Local Machine Settings */ #define MY_IP localm[NETIF_ETH].IpAdr #define DHCP_TOUT 50 /* DHCP timeout 5 seconds */ /*--------------------------- dhcp_check ------------------------------------*/ static void dhcp_check () { /* Monitor DHCP IP address assignment. */ if (tick == __FALSE || dhcp_tout == 0) { return; } if (mem_test (&MY_IP, 0, IP_ADRLEN) == __FALSE) { /* Success, DHCP has already got the IP address. */ dhcp_tout = 0; return; } if (--dhcp_tout == 0) { /* A timeout, disable DHCP and use static IP address. */ dhcp_disable (); } } /*--------------------------------- timer_poll func ------------------------------------------*/ void timer_poll () { if (SysTick->CTRL & 0x10000) /*100mstimeout*/ { timer_tick (); // RL-TCPnet function tick = __TRUE; } } /*********************************** Init Timer(SysTimer)****************************/ void timer_init(void){ /* Setup and enable the SysTick timer for 100ms. */ SysTick->LOAD = (100000000 / 10) - 1; /* SysTick->LOAD = (SystemCoreClock / 10) - 1;*/ SysTick->CTRL = 0x05; } /**************************** Main ***********************************************/ int main (void) { timer_init (); init_TcpNet (); dhcp_tout = DHCP_TOUT; while (1) { timer_poll (); main_TcpNet (); dhcp_check (); } }
دیدگاه