单片机异常复位

[复制链接]
5224|29
 楼主| youimiss 发表于 2013-12-23 16:48 | 显示全部楼层
cjseng 发表于 2013-12-23 16:45
直接用keil仿真运行,看看Sp_max为多少?如果接近0xff
,那就危险了。

堆栈可以在52的高128字节吗?可以在外部RAM中吗?
cjseng 发表于 2013-12-23 16:51 | 显示全部楼层
youimiss 发表于 2013-12-23 16:48
堆栈可以在52的高128字节吗?可以在外部RAM中吗?

可以在高128字节,但不能在外部RAM.
w522930954 发表于 2013-12-23 17:40 | 显示全部楼层
楼主不是不能仿真吗?
puppet21 发表于 2013-12-24 09:10 | 显示全部楼层
我见过的复位现象是因为供电不足的

你的单片机如果直接用USB供电的话,外围又挂了很多设备,就很容易引起供电不足的情况。

如果是我说的这种情况,建议用DC5V 的电源测试一下有没有问题。
m564522634 发表于 2013-12-24 09:42 | 显示全部楼层
这个你看下反汇编吧,不过应该是数组下标越界了,或者是你函数调用太多的嵌套了,用的堆栈太多了。还有你确定硬件没什么问题吗,硬件看下电源稳不稳,在运行的时候电源有没有异常的波动了,这看要拿示波器看的。软件的话要判断有点难了,因为这是不断运行出现的结果了。重点看下数组下标,和你的函数里有没有定义比较大的局部变量,函数嵌套是不是太多了,
 楼主| youimiss 发表于 2013-12-24 10:34 | 显示全部楼层
puppet21 发表于 2013-12-24 09:10
我见过的复位现象是因为供电不足的

你的单片机如果直接用USB供电的话,外围又挂了很多设备,就很容易引起 ...

电源没问题
 楼主| youimiss 发表于 2013-12-25 08:47 | 显示全部楼层
w522930954 发表于 2013-12-23 17:40
楼主不是不能仿真吗?

不能仿真
 楼主| youimiss 发表于 2013-12-25 08:49 | 显示全部楼层
cjseng 发表于 2013-12-23 16:43
直接用keil仿真运行看看,SP_max为多少?如果接近0XFF,那就危险了。

堆栈好像没溢出。。。
ningling_21 发表于 2013-12-25 10:59 | 显示全部楼层
youimiss 发表于 2013-12-25 08:49
堆栈好像没溢出。。。

不能好像,你必须确切的知道是不是没有溢出...
另,你可以把程序逐模块删减,看看是不是某个模块引起的...
 楼主| youimiss 发表于 2013-12-25 12:11 | 显示全部楼层
ningling_21 发表于 2013-12-25 10:59
不能好像,你必须确切的知道是不是没有溢出...
另,你可以把程序逐模块删减,看看是不是某个模块引起的.. ...

我好像的意思是说,我现在只能用keil自带的仿真器跑一下,SP_max最大时候为0x7e,现在在屏蔽程序调试,由于出现的概率太小,测试以100次为基准,有时候都会引起误判:L
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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