打印

msp430程序跑飞

[复制链接]
3932|15
手机看帖
扫描二维码
随时随地手机跟帖
沙发
spark周| | 2011-6-15 16:35 | 只看该作者
1.中断或主函数中有死循环,现象是程序停在某处。
2.堆栈溢出。现象是程序跑飞。
解决办法:
A.看中断有没有用 _EINT(),引起中断嵌套.
B.Project--Options--General Options---Stack/Heap 将Stack size设置大一些。

使用特权

评论回复
板凳
wuhany| | 2011-6-15 16:52 | 只看该作者
中断耗时太长,刚出中断又进去了.这时的现象是程序一直在中断中执行,回不到主函数。
检查CPU的电源是不是稳定,msp430在要保证程序正常运行,需保证Vcc大于1.8V。当电压低至0.8V时,程序仍有可能执行。这时的现象是PC指针乱飞,有复位,死机,停在中断,时钟频率发生变化等现象。

使用特权

评论回复
地板
lizye| | 2011-6-15 16:53 | 只看该作者
程序编译没问题,下载程序后上电不断复位,该问题是由于WDT造成的(RAM的初始化时间大于WDT默认的32MS时间,因此MSP复位)根本原因是初始化的时间过长,超过了看门狗的时间,初始化完成以后才能进入main函数,这时关狗已经来不及了。

使用特权

评论回复
5
shimx| | 2011-6-15 17:03 | 只看该作者
解决的办法:
对你的数组用 __no init_定义,上电编译器不产生特殊的附加函数去初始化RAM.

使用特权

评论回复
6
shimx| | 2011-6-15 17:04 | 只看该作者
在Project--Options--Linker--Config中选择 Override default programe,并将Entry lib 设置成 __program_start这时要修改Cstartup.S43(记得把它加入复制到工程而不是修改系统的),在第一条指令前加入关狗的指令,在main函数里再开(如果需要的话)。

使用特权

评论回复
7
spark周| | 2011-6-15 17:12 | 只看该作者
是的,如果用汇编,则没有这个问题

使用特权

评论回复
8
jiaxw|  楼主 | 2011-6-15 17:15 | 只看该作者
多谢,了解了

使用特权

评论回复
9
饮冰21| | 2012-3-25 11:52 | 只看该作者
2# spark周 如果要设置AD中断中断嵌套,怎么解决程序跑飞?我的程序是两个中断需要嵌套,但是进入AD后一直死在里面了,请问怎么解决?

使用特权

评论回复
10
checkcai| | 2012-3-25 12:47 | 只看该作者
仿真一下试试啊!!!应该能找到问题

使用特权

评论回复
11
tianm| | 2012-3-26 10:35 | 只看该作者
这个不太好总结 但好的编程习惯 可以减少这种问题

使用特权

评论回复
12
快乐出发| | 2012-3-26 11:19 | 只看该作者
了解一下。

使用特权

评论回复
13
huangfeng33| | 2012-3-26 22:23 | 只看该作者
学习学习~~

使用特权

评论回复
14
益友电子| | 2012-3-27 09:22 | 只看该作者
应该是中断进入死循环了吧,可以使用看门狗!

使用特权

评论回复
15
TI_MCU| | 2012-3-27 11:49 | 只看该作者
有时候要注意下,可能看起来是跑飞,但实际上只是运行在低功耗模式下没有执行程序。

另外有时候可能对堆栈有误操作

使用特权

评论回复
16
拿起书本| | 2012-3-27 22:32 | 只看该作者
把程序弄好了,再加看门狗试试看吧。:loveliness:

使用特权

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

本版积分规则

825

主题

9762

帖子

4

粉丝