打印

PIC24FJ128GB206程序固化后运行一段时间就会复位

[复制链接]
2393|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cuilonglong|  楼主 | 2013-1-4 09:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我采用的是PIC24FJ128GB206单片机,现在遇到一个问题:当我把程序烧写到单片机后,单片机运行一段时间(三小时20分钟左右)就会复位一次,并且很有规律,看门狗已关闭,而用ICD3 仿真器在线跑程序时则运行正常,不会出现上述问题,这是什么原因啊,在此向各位求助!多谢了!!!
沙发
yewuyi| | 2013-1-4 09:56 | 只看该作者
既然看门狗已经关闭,则造成复位的原因无非是:上电、掉电复位、PC指针乱跳造成复位、堆栈溢出造成复位等原因,一条条排查就是了。

使用特权

评论回复
板凳
yewuyi| | 2013-1-4 09:57 | 只看该作者
检查自己的代码中是否有临界代码,这些临界代码在运行一段时间后可能形成堆栈等溢出并造成复位,有时间规律的复位一般为这种情况造成的。

使用特权

评论回复
地板
XIEYUANBIN| | 2013-1-4 14:08 | 只看该作者
估计你的子函数调用层次太多,堆栈溢出所致。

使用特权

评论回复
5
cuilonglong|  楼主 | 2013-1-8 16:33 | 只看该作者
yewuyi 发表于 2013-1-4 09:57
检查自己的代码中是否有临界代码,这些临界代码在运行一段时间后可能形成堆栈等溢出并造成复位,有时间规律 ...

多谢您的指导,我做了一些检查,上电、掉电复位可以排除掉,是不是PC指针乱跳造或堆栈溢出造成复位还没确定,请问一下什么是临界代码,能否举个例子?如何去检查临界代码呢? 多谢了!!!:)

使用特权

评论回复
6
cuilonglong|  楼主 | 2013-1-8 16:36 | 只看该作者
XIEYUANBIN 发表于 2013-1-4 14:08
估计你的子函数调用层次太多,堆栈溢出所致。

谢谢您的回复,我把主函数改为简单的变量循环加1,没有调用子函数,还是会出现复位情况,真是有些奇怪啊!

使用特权

评论回复
7
yewuyi| | 2013-1-8 16:53 | 只看该作者
如果以下这样还复位的话,呵呵估计是看门狗了:

void main(void)
{
while(1){}
}

使用特权

评论回复
8
cuilonglong|  楼主 | 2013-1-12 10:52 | 只看该作者
yewuyi 发表于 2013-1-8 16:53
如果以下这样还复位的话,呵呵估计是看门狗了:

void main(void)

我的主函数就是这种类型的,看门狗查了一下是关闭的,还得花时间好好研究一下,能不能加一下您的QQ,方便向您请教请教。QQ:745903614

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

0

帖子

1

粉丝