工具/软件:TI C/C++编译器
您好!
在将器件的 IP 地址保存到 EEPROM 中时、我遇到了一些问题。 我正在使用 lwIP 的示例代码、根据我的需要进行一些更改。 问题是 我想将 IP 地址保存在 EEPROM 中、我从 DHCP 获取、并将函数的返回值分配给 EEPROM 变量、它从 "lwIPLocalIPAddrGet ()"(即0xFFFFFFFF)保存 ELSE 语句的返回地址。 我尝试了但没有成功。 如果有人对此有了解、请帮助我。
此致、
Faizan Ahsan
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:TI C/C++编译器
您好!
在将器件的 IP 地址保存到 EEPROM 中时、我遇到了一些问题。 我正在使用 lwIP 的示例代码、根据我的需要进行一些更改。 问题是 我想将 IP 地址保存在 EEPROM 中、我从 DHCP 获取、并将函数的返回值分配给 EEPROM 变量、它从 "lwIPLocalIPAddrGet ()"(即0xFFFFFFFF)保存 ELSE 语句的返回地址。 我尝试了但没有成功。 如果有人对此有了解、请帮助我。
此致、
Faizan Ahsan
您好,Faizan,
您如何知道它正在接受 Else 语句? 如果 EEPROM 编程不成功、EEPROM 将保留原始的已擦除值、也是0xFFFFFFFF。 下面是 TivaWare Driverlib 用户指南中显示的一个示例。 这与您对 EEPROM 进行编程时使用的方法是否相似?
uint32_t ui32EEPROMInit; uint32_t pui32Data[2]; uint32_t pui32Rad[2]; // 启用 EEPROM 模块。 // SysCtlPeripheralEnable (SYSCTL_Periph_EEPROM0); // 等待 EEPROM 模块准备就绪。 // while (!SysCtlPeripheralReady (SYSCTL_Periph_EEPROM0)) }{ // //等待 EEPROM 初始化完成 // ui32EEPROMInit = EEPROMInit(); // //检查 EEPROM 初始化是否返回错误 //并通知应用 // if (ui32EEPROMInit!= EEPROM_INIT_OK) { while (1) { } // //将一些数据编程到地址0x400的 EEPROM 中。 // pui32Data[0]= 0x12345678; pui32Data[1]= 0x56789abc; EEPROMProgram (pui32Data、0x400、sizeof (pui32Data)); // //读回它。 // EEPROMRead (pui32Read、0x400、sizeof (pui32Read));
你好 Fizan。
假设已将 IP 地址的各个部分转换为4个不同的字节并放入 my_IP[4]数组、则可以使用以下代码
#define IP_Location 32 // EEPROM 的第32个寻址位置(第9个字)-或任何其他合适的位置
void changeIP (字节 my_IP[4])
{
for (int i=0;i < 4;i++)
{
EEPROM.write (IP_Location + I、my_IP[i]);
延迟(50);
}
}
下面是一个链接、用于下载经过细微修改的 TIVAWARE EEPROM 版本。 阅读文档。 非常方便!