单片机msp430程序跑飞原因和解决方式积累

来源:本站
导读:目前正在解读《单片机msp430程序跑飞原因和解决方式积累》的相关信息,《单片机msp430程序跑飞原因和解决方式积累》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《单片机msp430程序跑飞原因和解决方式积累》的详细说明。
简介:文章总结了msp430单片机程序跑飞原因和解决方式积累。

1.中断或主函数中有死循环,现象是程序停在某处。

2.堆栈溢出。现象是程序跑飞。

*****************************************************************************

3、是否开了中断但是没有用。如:

开了中断:

TA0CCTL0 = CCIE;// CCR0 interrupt enabled

TA0CCTL1 = CCIE;// CCR1 interrupt enabled//时间周期1使能

TA0CCTL2 = CCIE;// CCR2 interrupt enabled//时间周期2使能

TA0CCTL3= CCIE;// CCR3 interrupt enabled//时间周期3使能

但是:

定时器中:

case 4:(TA0CCTL2 = CCIE;)和 case 6:(TA0CCTL3= CCIE;)内没有处理的程序。

……

case 2:

TA0CCR1 +=1024;// Add Offset to CCR2

SecondReach=1;

CountToMunite++;

Rquestinterval++;

SecondTimecount++;

break;// CCR4 not used

case 4:

break;

case 6:

break;

case 8:

break;// CCR3 not used

……

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函数里再开(如果需要的话)。

如果用汇编,则没有这个问题

*****************************************************************************

6、把无用的中断允许关掉。

提醒:《单片机msp430程序跑飞原因和解决方式积累》最后刷新时间 2024-03-14 01:08:56,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《单片机msp430程序跑飞原因和解决方式积累》该内容的真实性请自行鉴别。