[MCU] 谁有过msp430程序跑飞的的总结呢

[复制链接]
4233|36
 楼主| shimx 发表于 2021-1-6 22:00 | 显示全部楼层 |阅读模式
谁有过msp430程序跑飞的的总结呢
jlyuan 发表于 2021-1-6 22:03 | 显示全部楼层

1.中断或主函数中有死循环,现象是程序停在某处。
2.堆栈溢出。现象是程序跑飞。
解决办法:
A.看中断有没有用 _EINT(),引起中断嵌套.
B.Project--Options--General Options---Stack/Heap 将Stack size设置大一些。
jlyuan 发表于 2021-1-6 22:06 | 显示全部楼层

中断耗时太长,刚出中断又进去了.这时的现象是程序一直在中断中执行,回不到主函数。
检查CPU的电源是不是稳定,msp430在要保证程序正常运行,需保证Vcc大于1.8V。当电压低至0.8V时,程序仍有可能执行。这时的现象是PC指针乱飞,有复位,死机,停在中断,时钟频率发生变化等现象。
jlyuan 发表于 2021-1-6 22:10 | 显示全部楼层
程序编译没问题,下载程序后上电不断复位,该问题是由于WDT造成的(RAM的初始化时间大于WDT默认的32MS时间,因此MSP复位)根本原因是初始化的时间过长,超过了看门狗的时间,初始化完成以后才能进入main函数,这时关狗已经来不及了。
wyjie 发表于 2021-1-6 22:12 | 显示全部楼层

解决的办法:
对你的数组用 __no init_定义,上电编译器不产生特殊的附加函数去初始化RAM.
wyjie 发表于 2021-1-6 22:18 | 显示全部楼层
在Project--Options--Linker--Config中选择 Override default programe,并将Entry lib 设置成 __program_start这时要修改Cstartup.S43(记得把它加入复制到工程而不是修改系统的),在第一条指令前加入关狗的指令,在main函数里再开(如果需要的话)。
wyjie 发表于 2021-1-6 22:22 | 显示全部楼层
是的,如果用汇编,则没有这个问题
heweibig 发表于 2021-1-6 22:25 | 显示全部楼层
如果要设置AD中断中断嵌套,怎么解决程序跑飞?我的程序是两个中断需要嵌套,但是进入AD后一直死在里面了,请问怎么解决?
heweibig 发表于 2021-1-6 22:29 | 显示全部楼层
如果要设置AD中断中断嵌套,怎么解决程序跑飞?我的程序是两个中断需要嵌套,但是进入AD后一直死在里面了,请问怎么解决?
lizye 发表于 2021-1-6 22:35 | 显示全部楼层
把程序弄好了,再加看门狗试试看吧。
chenho 发表于 2021-1-6 22:39 | 显示全部楼层
你里面的代码有问题了。
建议使用看门狗试试。
zhaoxqi 发表于 2021-1-6 22:45 | 显示全部楼层
有过这个跑飞的现象。
午夜粪车 发表于 2021-1-6 22:48 | 显示全部楼层
当时定义的数组太大,计算的问题。
 楼主| shimx 发表于 2021-1-6 22:51 | 显示全部楼层
嗯,我知道了
chenjunt 发表于 2021-1-6 22:54 | 显示全部楼层
你里面的代码有问题了。
jiahy 发表于 2021-1-6 22:58 | 显示全部楼层

建议使用看门狗试试。

有过这个跑飞的现象。
当时定义的数组太大,计算的问题。
llia 发表于 2021-1-6 23:02 | 显示全部楼层
是否打开了某个中断
zhuww 发表于 2021-1-6 23:07 | 显示全部楼层
首先为了防止编译器优化中断变量,要在这些变量定义时前加 volatile,其次在主循环中读取中断变量前应该首先关闭全局中断,防止读到一半被中断给修改了
xxmmi 发表于 2021-1-6 23:10 | 显示全部楼层
无条件的死循环?
stly 发表于 2021-1-6 23:13 | 显示全部楼层
看门狗没有关闭
您需要登录后才可以回帖 登录 | 注册

本版积分规则

857

主题

10661

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部