查看: 3958|回复: 17

[已解决] 没用变量影响问题(已解决)

[复制链接]

该用户从未签到

4

主题

30

帖子

0

注册会员

Rank: 2

积分
83
最后登录
1970-1-1
发表于 2014-9-1 12:48:42 | 显示全部楼层 |阅读模式
本帖最后由 FSL_TICS_ZJJ 于 2014-10-9 19:17 编辑

调试总出现这样的问题,在调用的子程序中定义了几个没用使用过的数组。按说,可以将这些定义删除,但是现在的情况是,一旦删除这些数组,程序就出问题。。。(编译没问题,板子上跑起来结果有问题)不知道原因何在。有没有朋友遇到过?
我知道答案 目前已有17人回答
回复

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-9-1 14:15:14 | 显示全部楼层
楼主,一旦删除有什么问题?
还有你用的是什么芯片,请把问题描述清楚,这样我们好帮你解答哦。
回复 支持 反对

使用道具 举报

该用户从未签到

4

主题

30

帖子

0

注册会员

Rank: 2

积分
83
最后登录
1970-1-1
 楼主| 发表于 2014-9-1 15:17:36 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2014-9-1 14:15
楼主,一旦删除有什么问题?
还有你用的是什么芯片,请把问题描述清楚,这样我们好帮你解答哦。 ...

是这样的,芯片是K60的,我写了个I2C的初始化函数,函数中定义了几个数组,本来是初始化打算用的,后来没用到,就先放着了。程序调试好后,想把这几个定义的数组删除,但是运行起来,I2C上面就读不到数据了。
回复 支持 反对

使用道具 举报

该用户从未签到

16

主题

705

帖子

0

金牌会员

Rank: 6Rank: 6

积分
1745
最后登录
1970-1-1
发表于 2014-9-1 15:22:23 | 显示全部楼层
venom 发表于 2014-9-1 15:17
是这样的,芯片是K60的,我写了个I2C的初始化函数,函数中定义了几个数组,本来是初始化打算用的,后来没 ...

你数组加上就好了吗?
是不是哪里用了你忘了?
代码咋写的,发出来看看呢。
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-9-1 15:40:46 | 显示全部楼层
venom 发表于 2014-9-1 15:17
是这样的,芯片是K60的,我写了个I2C的初始化函数,函数中定义了几个数组,本来是初始化打算用的,后来没 ...

楼主,在我们的K60的官方代码中,是有I2C的代码的,你可以参考下,[url=https://www.freescale.co
m/zh-Hans/webapp/sps/site/prod_summary.jsp?code=TWR-K60D100M&fpsp=1&tab=Design_Tools_Tab#]KINETIS512_V2_SC[/url]
回复 支持 反对

使用道具 举报

该用户从未签到

4

主题

30

帖子

0

注册会员

Rank: 2

积分
83
最后登录
1970-1-1
 楼主| 发表于 2014-9-1 15:43:44 | 显示全部楼层
本帖最后由 venom 于 2014-9-1 15:45 编辑
xinyinzhou 发表于 2014-9-1 15:22
你数组加上就好了吗?
是不是哪里用了你忘了?
代码咋写的,发出来看看呢。 ...

void MMA_Init()
{
  I2C_InitTypeDef i2c_init_param;
  
#if 1
  uint8 Buf[]={0x15,0x20,0x00,0x10,0x0C,0xE0,0x13,0x10,0x00,0x5A};
  uint8 Buf1[]={0x17,0x20,0x05,0x01,0x00};
  uint8 Buf2[]={0x15,0x20,0x06,0x01,0x80};
  uint8 Buf3[]={0x12,0x20,0x06,0x01,0x00};
#endif
  
  //初始化I2CX
  i2c_init_param.I2C_I2Cx = MMA_I2CX;      
  i2c_init_param.I2C_IntEnable = FALSE;
  i2c_init_param.I2C_ICR = MMA_SCL_100KHZ;  
  i2c_init_param.I2C_SclPin = MMA_SCLPIN;   
  i2c_init_param.I2C_SdaPin = MMA_SDAPIN;   
  i2c_init_param.I2C_Isr = NULL;
  
  I2C_Init(i2c_init_param);
  Delay();
}

这个就是初始化程序,里面的数组没有用到,但是删除掉,I2C就读不到数据,而且,这几个数组大小也不能改变,数组里面的数删掉一个也会出问题。。。。。
我在想I2C的时序会存在问题吗?定义几个数组也不至于影响时序吧?
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-9-1 15:50:58 | 显示全部楼层
venom 发表于 2014-9-1 15:43
void MMA_Init()
{
  I2C_InitTypeDef i2c_init_param;

你这几个数组确定都没有用到?
如果只是初始化,不会因为这个影响到的。
你删掉后,把你工程clean下,然后再重新编译,下载试试。
回复 支持 反对

使用道具 举报

该用户从未签到

4

主题

30

帖子

0

注册会员

Rank: 2

积分
83
最后登录
1970-1-1
 楼主| 发表于 2014-9-1 16:01:09 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2014-9-1 15:50
你这几个数组确定都没有用到?
如果只是初始化,不会因为这个影响到的。
你删掉后,把你工程clean下,然 ...

是这样的,clean之后还是这个现象,我看了下波形,I2C的ACK信号一直是高,就是说没收到ACK信号,所以没读到数据。
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-9-1 16:15:48 | 显示全部楼层
venom 发表于 2014-9-1 16:01
是这样的,clean之后还是这个现象,我看了下波形,I2C的ACK信号一直是高,就是说没收到ACK信号,所以没读 ...

你搜下你的Buf这些数组名字,是不是在哪里用到了?
全局搜索下。
你的代码是别人的,还是自己写的?
回复 支持 反对

使用道具 举报

该用户从未签到

16

主题

705

帖子

0

金牌会员

Rank: 6Rank: 6

积分
1745
最后登录
1970-1-1
发表于 2014-9-1 16:19:19 | 显示全部楼层
venom 发表于 2014-9-1 15:43
void MMA_Init()
{
  I2C_InitTypeDef i2c_init_param;

你用示波器抓下波形,看看去掉和不去掉波形有啥区别,前面发的数据什么的是不是有区别。
最好把两个图贴上来给我们看看。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-20 19:35 , Processed in 0.107363 second(s), 30 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表