打印

碰见一个变量定义与取值范围的奇怪问题(已基本解决)

[复制链接]
5052|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mxinfa|  楼主 | 2009-8-9 11:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 mxinfa 于 2009-8-9 17:55 编辑

code.rar (577.38 KB)
沙发
mxinfa|  楼主 | 2009-8-9 11:42 | 只看该作者
本帖最后由 mxinfa 于 2009-8-9 11:43 编辑

下面代码

unsigned int ADValuetest[900];

int main(void)
{
u16 i;
初始化;
  for(i=0;i<900;i++)
  {
  ADValuetest=ADC_GetConversionValue(ADC1);
  }

while(1)
  {  
  }
}

实际仿真在while处加断点在观察窗口发现,ADValuetest只显示到了ADValuetest[0]ADValuetest[299],后面不是没有值,而是根本就不存在后面的变量;查看i的值查看不了,显示信息为out ot scope(确认是ot);把上面的900修改成300以下的值就没有问题了,但i还是out ot scope,改成u32也不行

另外,定义ADValuetest,如果前面加static就会警告:变量定义但没有使用。然后仿真出错;还有如果把ADValuetest定义在main里面,前面不管加什么修饰符,始终是变量定义但没有使用,然后仿真出错。

怎么这么多奇怪的问题呢,不过除了前几个值以外,其余的AD采样值仍然是准确的,MDK3.40的环境,求帮助,非常感谢,代码打包上传(在楼主位)

使用特权

评论回复
板凳
mxinfa|  楼主 | 2009-8-9 11:47 | 只看该作者
不知道怎么回事本来编辑好在一起的,附件跟内容分离了,同样不知道怎么回事搞成斜体了,也不知道怎么修改

使用特权

评论回复
地板
mxinfa|  楼主 | 2009-8-9 17:55 | 只看该作者
弱了一次,原来定义多大的数组都可以(只要内存够用),只是在在keil的观察窗口中看不见而已,另外把i定义成全局变量就可以观察其值了,虽然很多根本性的问题还没搞清楚,至少问题算是勉强解决了

使用特权

评论回复
5
香水城| | 2009-8-9 18:34 | 只看该作者
"在keil的观察窗口中看不见",这好像是KEIL的一个限制。

使用特权

评论回复
6
自然的天逸| | 2009-8-10 10:44 | 只看该作者
最大只能看大255

使用特权

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

本版积分规则

33

主题

198

帖子

1

粉丝