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

[复制链接]
2894|6
 楼主| qianlong30 发表于 2008-3-11 22:23 | 显示全部楼层 |阅读模式
用PIC16F877串口做主从机通信,主机程序编写错误:接收字节已经超过定义的接收字节数组,就是说定义数组有10个元素,而程序中使用到了16个元素.<br />WDT打开,使用正确.<br />怎么出现由于使用数组个数超过定义的数组个数,而出现CPU死机(7段数码管先乱码,然后在一位上死掉)?并且WDT也拉不回来?<br />把数组重新定义后就正确了.但是个心病,不理解,请教.
平常人 发表于 2008-3-11 22:32 | 显示全部楼层

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

然后分析一下。既然已经知道是数组溢出的问题,下面的事情应该不难的。
chunyang 发表于 2008-3-11 22:54 | 显示全部楼层

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

一般只有两个:初始化不完全或WDT未溢出复位。
hotpower 发表于 2008-3-11 23:05 | 显示全部楼层

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

  
xwj 发表于 2008-3-12 08:18 | 显示全部楼层

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

  
yewuyi 发表于 2008-3-12 08:38 | 显示全部楼层

估计是只宠物狗

  
zgl7903 发表于 2008-3-12 09:08 | 显示全部楼层

个人见解

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

本版积分规则

150

主题

353

帖子

2

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