跪求高手解决疑难MSP430编程问题

[复制链接]
2208|6
 楼主| algerlis 发表于 2013-6-6 21:50 | 显示全部楼层 |阅读模式
最近干项目发现一个非常诡异的问题。跪求高手帮忙解决。
单片机:MSP430F2274,开发环境:IAR4.0.2
有一段最简单的移位程序:
变量定义:
unsigned int tt1,tt2,tt3,tt4,tt5;
程序段:
tt1=16;
tt5=tt4;
tt4=tt3;
tt3=tt2;
tt2=tt1;
当这段程序放在主循环中时,完全没有问题,tt1=tt2=tt3=tt4=tt5=16;

然而当这段程序放在一个子程序中时,tt3,tt4,tt5的值却不等于16,
例如:

if(flag==1)
{tt1=16;
tt5=tt4;
tt4=tt3;
tt3=tt2;
tt2=tt1;










 楼主| algerlis 发表于 2013-6-6 21:53 | 显示全部楼层
操作错误,没有说完。
if(flag==1)
{tt1=16;
tt5=tt4;
tt4=tt3;
tt3=tt2;
tt2=tt1;
flag=0;
}
flag标志由timerB定时器1毫秒产生一次。这个程序段中执行时,通过内存查看窗口看tt3,tt4,tt5的值却不等于16,此问题困扰小弟多时不知如何解决,跪求高手帮助。
tianm 发表于 2013-6-6 22:50 | 显示全部楼层
数据要初始化
hxfxt 发表于 2013-6-6 23:02 | 显示全部楼层
对的你的tt3,tt4,tt5应该是随机的吧.............看看c语言书吧
jifuele 发表于 2013-6-7 10:17 | 显示全部楼层
顶:victory:
banalmaster 发表于 2013-6-7 11:17 | 显示全部楼层
将变量定义为全局变量
 楼主| algerlis 发表于 2013-6-23 21:30 | 显示全部楼层
感谢各位关注,这段程序的前一段是采集8路AD值,然后移位做算术平均,结果发现移位程序始终出错,现已经发现问题,原因是在主程序中有段中断AD采集程序,用MSP430采集8路AD,采集结果是放在内存中,每次采集后会造成内存中数据的错乱,所以后面的数据移位程序会出错,将移位程序稍微远离AD采集程序就好了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

58

帖子

0

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