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

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
ayb_ice 发表于 2012-6-15 14:46 | 显示全部楼层
这样的问题还要想一个星期,一调试立马出问题了,不解释自己看,看书想

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
jiaozhu222 发表于 2012-6-15 16:18 | 显示全部楼层
本帖最后由 jiaozhu222 于 2012-6-15 16:23 编辑

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

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

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




他们都在静态存储区,数组越界把Stopwatch存储地址的数值改写了,应该是这样。
hjs1618 发表于 2012-6-15 16:28 | 显示全部楼层
那你就定义8个,别6个!
 楼主| jinyuewei 发表于 2012-6-15 20:43 | 显示全部楼层
LS高人啊,小弟感激不尽!以后还望多多指教啊!看来还是数组越界,带来的隐患啊!
原野之狼 发表于 2012-6-16 12:10 | 显示全部楼层
数组的长度用宏来表示  这样就不会出现这种失误了
wukunshan 发表于 2012-6-16 13:55 | 显示全部楼层
哈哈,犯错误那个都会有,关键是要懂得查找错误。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

0

主题

71

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部