打印

程序错误能导致CPU死机?(而且WDT都失效)

[复制链接]
2343|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qianlong30|  楼主 | 2008-3-11 22:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用PIC16F877串口做主从机通信,主机程序编写错误:接收字节已经超过定义的接收字节数组,就是说定义数组有10个元素,而程序中使用到了16个元素.
WDT打开,使用正确.
怎么出现由于使用数组个数超过定义的数组个数,而出现CPU死机(7段数码管先乱码,然后在一位上死掉)?并且WDT也拉不回来?
把数组重新定义后就正确了.但是个心病,不理解,请教.

相关帖子

沙发
平常人| | 2008-3-11 22:32 | 只看该作者

查一查,数组溢出时,把哪些数据变量破坏了

然后分析一下。既然已经知道是数组溢出的问题,下面的事情应该不难的。

使用特权

评论回复
板凳
chunyang| | 2008-3-11 22:54 | 只看该作者

WDT无法恢复的原因要搞清楚

一般只有两个:初始化不完全或WDT未溢出复位。

使用特权

评论回复
地板
hotpower| | 2008-3-11 23:05 | 只看该作者

估计是循环喂狗造成的~~~

使用特权

评论回复
5
xwj| | 2008-3-12 08:18 | 只看该作者

狗没死,只是吃得太多了...

使用特权

评论回复
6
yewuyi| | 2008-3-12 08:38 | 只看该作者

估计是只宠物狗

使用特权

评论回复
7
zgl7903| | 2008-3-12 09:08 | 只看该作者

个人见解

PIC单片机的内置WDT,有两种启动方式,
1:烧录时硬件配置为开启,这种方式下WDT始终在运行
2:软件开启,受SWDTEN位控制
估计WDT不起作用是使用软件开启的,而程序执行中又错误的写关闭了WDT
可以烧会原来的程序,把配置为硬件WDT配置位打开试试看

使用特权

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

本版积分规则

149

主题

349

帖子

2

粉丝