sbgavin 发表于 2012-12-26 14:17:50

单片机编程全局变量会自己改变内容

最近用LPC1768做项目时发生了一件匪夷所思的事情,我定义了一个结构体(全局变量),但是在运行时候其中的内容会随着程序的运行而变化(运行期间没有对这个结构体做任何动作{:smile:} ),百思不得其解,还望高人指点一二,感激不尽!{:smile:}

snoopyzz 发表于 2012-12-26 14:29:06

其它数组或指针变量写穿了...就是说有其它的越界操作

makesoft 发表于 2012-12-26 14:43:41

内存泄漏或者是栈溢。

xf331785508 发表于 2012-12-26 15:07:15

哪个大师说过的一句话,程序中莫名其秒的变量问题[无论局部还是全局],大都是数组越界造成的!

117433525 发表于 2012-12-26 15:36:01

数组越界或指针越界。

magiczero 发表于 2012-12-26 15:37:16

xf331785508 发表于 2012-12-26 15:07 static/image/common/back.gif
哪个大师说过的一句话,程序中莫名其秒的变量问题[无论局部还是全局],大都是数组越界造成的! ...

+1{:smile:}

kebaojun305 发表于 2012-12-26 17:14:28

你这种问题好找 直接使用高级端点设置修改这个变量时 暂停。

sbgavin 发表于 2012-12-27 17:09:13

kebaojun305 发表于 2012-12-26 17:14 static/image/common/back.gif
你这种问题好找 直接使用高级端点设置修改这个变量时 暂停。

我在仿真时,单步运行,运行到好多个地方都可以使那个结构体(全局变量)中的成员变化,甚至运行的函数和那个结构没有一点的联系,那个结构体也在变化。很头疼的问题。不知道你所说的高级端点是不是这样做的,因为我对keil不很熟悉,我在网上找了找,也没有找到关于设置高级端点的文章,所以还请详加指点,谢谢!{:smile:}

jackiezeng 发表于 2012-12-27 17:12:38

肯定是你程序哪里修改了,或者捞过界了,

sbgavin 发表于 2012-12-27 17:12:43

xf331785508 发表于 2012-12-26 15:07 static/image/common/back.gif
哪个大师说过的一句话,程序中莫名其秒的变量问题[无论局部还是全局],大都是数组越界造成的! ...

我把那个结构体(全局变量)放在一边,重新定义了几个全局变量代替那个结构体,位置一样,赋值一样,仿真的时候新定义的那几个变量就不会改变,这种情况是不是属于数组越界造成的呢?{:call:}

sbgavin 发表于 2012-12-27 17:14:24

jackiezeng 发表于 2012-12-27 17:12 static/image/common/back.gif
肯定是你程序哪里修改了,或者捞过界了,

我把那个结构体(全局变量)放在一边,重新定义了几个全局变量代替那个结构体,位置一样,赋值一样,仿真的时候新定义的那几个变量就不会改变,这种情况是不是属于越界造成的呢?{:smile:}

jackiezeng 发表于 2012-12-27 17:25:34

sbgavin 发表于 2012-12-27 17:14 static/image/common/back.gif
我把那个结构体(全局变量)放在一边,重新定义了几个全局变量代替那个结构体,位置一样,赋值一样,仿真 ...

你具体怎么弄的不清楚,反正我从来没有出现过非人为的原因导致的变量值改变的,,,,,

据说,强干扰会导致,,,但绝大多数的情况都是自己程序上的问题,,,

你自己好好找找吧,

xf331785508 发表于 2012-12-28 09:24:04

sbgavin 发表于 2012-12-27 17:12 static/image/common/back.gif
我把那个结构体(全局变量)放在一边,重新定义了几个全局变量代替那个结构体,位置一样,赋值一样,仿真 ...

位置一样,是代码位置一样吧,你重新定义一个结构体就不会变化的,基本上是数组越界或是堆栈溢出造成的。你运行其它与此结构体无关的函数也能引起变化,堆栈溢出的可能较大。把堆栈增大一倍试试。

liupeng08305 发表于 2012-12-28 19:56:35

仔细看看代码,估计是代码的问题{:smile:}

sam301 发表于 2012-12-29 11:41:49

13楼正解,

wswh2o 发表于 2012-12-29 16:12:51

发个程序一看就明白了。
一般就是越界了,数组或者栈,或者指针指错位置。

sbgavin 发表于 2013-1-9 16:11:42

wswh2o 发表于 2012-12-29 16:12 static/image/common/back.gif
发个程序一看就明白了。
一般就是越界了,数组或者栈,或者指针指错位置。 ...

程序很大,关键是我也不知道哪个地方有溢出,有什么办法可以检测到时哪个地方溢出了吗?{:smile:}

yelang1124 发表于 2014-4-8 18:31:24

sbgavin 发表于 2013-1-9 16:11
程序很大,关键是我也不知道哪个地方有溢出,有什么办法可以检测到时哪个地方溢出了吗?...

大哥,你的这个问题解决了吗
我也遇到同样的问题了
页: [1]
查看完整版本: 单片机编程全局变量会自己改变内容