打印

变量的问题,想了一个星期也想不明白,请高手解释!

[复制链接]
2043|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
问题是这样的的,程序里我定义的static volatile unsigned long Stopwatch全局变量,初始化为0,开中断周期1ms,让他到100ms Stopwatch变量+1。可是为什么我第一次进中断Stopwatch就变成了一个很大的数字,随后这个数据开始无规律的跳变,知道到达一个值后就开始稳定下来了,从此以后没100ms加1了。我用单片机开发板在数码管上显示就是这样的,在Keil仿真里观察Stopwatch变量也是一样的情况。问了很多人,自己也想了很多,可是怎么也找不到原因。现附上程序。 望请各位高手通过Keil仿真帮忙指点迷津,小弟感激不尽那!

1.NumberDisplay.rar

41.27 KB

相关帖子

沙发
ayb_ice| | 2012-6-15 14:46 | 只看该作者
这样的问题还要想一个星期,一调试立马出问题了,不解释自己看,看书想

未命名.JPG (132.95 KB )

未命名.JPG

使用特权

评论回复
板凳
jiaozhu222| | 2012-6-15 16:18 | 只看该作者
本帖最后由 jiaozhu222 于 2012-6-15 16:23 编辑

LS高人,嫌问题简单不愿意指点,我们小菜鸟互相学习吧!
你这是数组越界了:

static uint8 DispBuff[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};  //数码管显示缓冲区

for (i = 0; i < 8; i++)            //拷贝到显示缓冲区
{  
        DispBuff[i]= buff[i];
}




他们都在静态存储区,数组越界把Stopwatch存储地址的数值改写了,应该是这样。

使用特权

评论回复
地板
hjs1618| | 2012-6-15 16:28 | 只看该作者
那你就定义8个,别6个!

使用特权

评论回复
5
jinyuewei|  楼主 | 2012-6-15 20:43 | 只看该作者
LS高人啊,小弟感激不尽!以后还望多多指教啊!看来还是数组越界,带来的隐患啊!

使用特权

评论回复
6
原野之狼| | 2012-6-16 12:10 | 只看该作者
数组的长度用宏来表示  这样就不会出现这种失误了

使用特权

评论回复
7
wukunshan| | 2012-6-16 13:55 | 只看该作者
哈哈,犯错误那个都会有,关键是要懂得查找错误。

使用特权

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

本版积分规则

个人签名:路漫漫其修远兮,吾将上下而求索!

0

主题

71

帖子

2

粉丝