野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 37645|回复: 1

[求助] STM32使用Lwip的时候全局变量异常

[复制链接]
发表于 2021-6-6 13:49:42 | 显示全部楼层 |阅读模式
1火花
问题描述:  g_mynetif ,netif的内容变了,全局变量和指向全局变量的地址。

使用MCU:之前使用的是STM32F407
目前项目需要更换:使用GD32F407ZGT6
根据例程修了Lwip代码

netconf.c 文件中定义了一个全局变量
static struct netif g_mynetif;

   netif_add(&g_mynetif, &ipaddr, &netmask, &gw, NULL, &ethernetif_init, &ethernet_input);    // (1)
   netif_set_default(&g_mynetif); // (2)

   ethernetif_init =》low_level_init(netif); =》netif->flags |= NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP;
   但是仿真的时候,全局变量 g_mynetif 和 指向 全局变量的指针 netif里面内容不一致,地址相同,数据丢失了。
   从截图中可以看到 { g_mynetif ,netif}的地址都是0x20017e08,但是运行过程中,我打了一个断点数据就不对了。导致判断的时候出现了异常。
D:\Soft_Normal\Youdao\Data\weixinobU7VjjylVFJIRHXm-Xo83a5OsH8\dedcc9245cb14190b5b370f1ee31e2ea\clipboard.png 1.jpg
实际上代码的运行需要判断,先处于某个阶段然后启用
netif->flags & NETIF_FLAG_UP != 1
然后设置启用,判断就出现问题了,一般这种问题,会是哪里影响的,在另外一个工程没有出现这个问题,这个是全局变量啊。


回复

使用道具 举报

 楼主| 发表于 2021-6-6 15:33:39 | 显示全部楼层
问题已经找到,由于调用了相同结构导致,同一个地址,赋值的结构不同
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-4 06:10 , Processed in 0.039320 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表