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

目录

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

MSP430 数组填充越界引起的栈溢出 导致程序跑飞

【单片机重启】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函数里再开(如果需要的话)。 
如果用汇编,则没有这个问题

http://topic.csdn.net/u/20100730/09/45f212a1-0354-4b73-ad62-335b5955c0f2.html

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

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值