本帖最后由 onbluesun 于 2012-5-27 12:54 编辑
ENC28j60的驱动程序uipopt.h中,UIP_IPADDR0、UIP_IPADDR1、UIP_IPADDR2和UIP_IPADDR3是存储IP地址的,如下代码:
- #define UIP_IPADDR0 192 /**< The first octet of the IP address of
- this uIP node, if UIP_FIXEDADDR is
- 1. hideinitializer */
- #define UIP_IPADDR1 168 /**< The second octet of the IP address of
- this uIP node, if UIP_FIXEDADDR is
- 1. hideinitializer */
- #define UIP_IPADDR2 1 /**< The third octet of the IP address of
- this uIP node, if UIP_FIXEDADDR is
- 1. hideinitializer */
- #define UIP_IPADDR3 13 /**< The fourth octet of the IP address of
- this uIP node, if UIP_FIXEDADDR is
- 1. hideinitializer */
复制代码我现在要通过TCP将要修改的IP发送给单片机,然后单片机将IP存在EEPROM中,再自动重启,就可以修改IP了。所以#define UIP_IPADDR0后面的数值肯定要变,要用变量,但是如果用变量的话,uip.c中的uip_hostaddr[]数组就出错了,因为UIP_IPADDR0是uip_hostaddr[]数组的元素之一,而数组元素是不能用变量的,如下代码:
- const u16_t uip_hostaddr[2] =
- {HTONS((UIP_IPADDR0 << 8) | UIP_IPADDR1),
- HTONS((UIP_IPADDR2 << 8) | UIP_IPADDR3)};
复制代码
一周热门 更多>