查看: 3710|回复: 2

MSP430程序跑飞之解决方法

[复制链接]
  • TA的每日心情
    开心
    2020-6-8 10:54
  • 签到天数: 235 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2013-1-29 19:59:35 | 显示全部楼层 |阅读模式
    分享到:
    1.中断或主函数中有死循环,现象是程序停在某处。
    2.堆栈溢出。现象是程序跑飞。
    解决办法:
    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函数里再开(如果需要的话)。
    其实最实用的方法:1.优化你的代码结构,程序中的局部变量尽量少用;2.加上看门狗功能
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-6-12 21:59
  • 签到天数: 647 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2013-1-29 21:02:20 | 显示全部楼层
    谢谢分享~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-12-1 10:22
  • 签到天数: 33 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2013-3-16 21:20:35 | 显示全部楼层
    在Project--Options--Linker--Config中选择 Override default programe,并将Entry lib 设置成 __program_start这时要修改Cstartup.S43(记得把它加入复制到工程而不是修改系统的),在第一条指令前加入关狗的指令,在main函数里再开(如果需要的话)。
    这一步 没有看懂 望详解!!3q
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-11-24 01:02 , Processed in 0.125384 second(s), 19 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.