1.中止或主函数中有死循环,现象是程序停在某处。
2.仓库溢出。现象是程序跑飞。
**************************************************************************************************
3、是否开了中止可是没有用。如:
开了中止:
可是:
定时器中:
……
……
4、数组越界。界说的数组只要50个单元,可是程序运转的过程中,却给他赋给50+个单元。
处理方法:
A.看中止有没有用 _EINT(),引起中止嵌套.
B.Project–Options–General Options—Stack/Heap 将Stack size设置大一些。
3.中止耗时太长,刚出中止又进去了.这时的现象是程序一直在中止中履行,回不到主函数。 (中止嵌套)
4.查看CPU的电源是不是安稳,msp430在要确保程序正常运转,需确保Vcc大于1.8V。当电压低至0.8V时,程序仍有或许履行。这时的现象是PC指针乱飞,有复位,死机,停在中止,时钟频率发生变化等现象。
5.程序编译没问题,下载程序后上电不断复位,该问题是因为WDT形成的(RAM的初始化时刻大于WDT默许的32MS时刻,因而MSP复位)底子原因是初始化的时刻过长,超过了看门狗的时刻,初始化完结今后才干进入main函数,这时关狗现已来不及了。
处理的方法:
A 对你的数组用 __no init_界说,上电编译器不发生特别的附加函数去初始化RAM.
B 在Project–Options–Linker–Config中挑选 Override default programe,并将Entry lib 设置成 __program_start这时要修正Cstartup.S43(记得把它参加复制到工程而不是修正体系的),在第一条指令前参加关狗的指令,在main函数里再开(假如需要的话)。
假如用汇编,则没有这个问题
http://topic.csdn.net/u/20100730/09/45f212a1-0354-4b73-ad62-335b5955c0f2.html
**************************************************************************************************