5454|1

2781

帖子

419

TA的资源

五彩晶圆(中级)

楼主
 

【跑飞、死机】msp430单片机程序跑飞原因和解决方式积累 [复制链接]

本帖最后由 qinkaiabc 于 2014-2-21 04:21 编辑

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、把无用的中断允许关掉。


分享自:http://t.cn/zWuNXwL


最新回复

很有用,记下了  详情 回复 发表于 2014-2-21 12:42
 
点赞 关注
个人签名

回复
举报

154

帖子

3

TA的资源

一粒金砂(中级)

沙发
 
很有用,记下了
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表