打印
[STM32]

很奇怪的问题,已经纠结了N天了

[复制链接]
1427|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chowei|  楼主 | 2015-2-4 10:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教一个问题:
我现在有一个全局变量(结构体里的变量)Dat.state用来记录一些状态量
和一个子函数的局部变量(数组)temp[50]
神奇的问题是
我temp与Dat.state没有任何一点关系,重来没有互相付值
但程序一运行temp[50]的初始化语句(for(i=0;i<50;i++)temp[i]=0;)
Dat.state立即清零
初始化语句换了N多种写法仍然是这样

我仿真的时候是只要运行到初始化他立即清零
而且退一万步说,我程序也必须运行到Dat.state付值相关的地方才清零啊,但他立即清零,这也解释不通啊?除非temp的地址与Dat.state相同了,但这怎么可能?

相关帖子

沙发
chowei|  楼主 | 2015-2-4 10:34 | 只看该作者
将局部变量定义成static也还是出问题

使用特权

评论回复
板凳
chowei|  楼主 | 2015-2-4 10:36 | 只看该作者
已经单步过了,
我把Dat.state加到观察窗口
然后只要运行到
temp[20]=0
Dat.state立即被清零

使用特权

评论回复
地板
hbchf| | 2015-2-4 22:01 | 只看该作者
局部代码上来看看

使用特权

评论回复
5
ayb_ice| | 2015-2-5 15:43 | 只看该作者
关中断再试,

使用特权

评论回复
6
crystal1987| | 2015-2-5 16:23 | 只看该作者
有没有注意局部变量(数组)temp[50]的作用域,要不贴代码出来看看吧。

使用特权

评论回复
7
zchong| | 2015-2-6 13:40 | 只看该作者
大概是栈溢出了

使用特权

评论回复
8
killvx| | 2015-2-8 20:44 | 只看该作者
你给每个任务分配的空间是多大

使用特权

评论回复
9
cainiao_123| | 2015-2-12 15:21 | 只看该作者
可以把程序贴出来,让大家运行一下看看是不是一样的结果

使用特权

评论回复
10
想做大牛的小马| | 2015-2-13 20:20 | 只看该作者
zchong 发表于 2015-2-6 13:40
大概是栈溢出了

正解,看看栈的配置,你把栈配大一点再试试看呢

使用特权

评论回复
11
chowei|  楼主 | 2015-11-5 15:01 | 只看该作者
zchong 发表于 2015-2-6 13:40
大概是栈溢出了

你是对的,将子一个不相关的函数里的数组移出去就OK了。估计是这个原因。

使用特权

评论回复
12
chowei|  楼主 | 2015-11-5 15:09 | 只看该作者
明明分配完了,给了分又说没分配完,加一分又说不够
系统有问题吧,

使用特权

评论回复
13
阿南| | 2015-11-6 13:50 | 只看该作者
chowei 发表于 2015-11-5 15:09
明明分配完了,给了分又说没分配完,加一分又说不够
系统有问题吧,

:lol

使用特权

评论回复
14
yangwenguan| | 2015-11-7 07:45 | 只看该作者
还有这样的问题, :L
进debug, 单步跟踪,

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

36

帖子

3

粉丝