本帖最后由 QQ826220679 于 2020-1-21 13:44 编辑
最近在做一个项目,用到了STC15W4K56S4单片机,程序开启了看门狗,由于和外部通讯,当通讯数据量大到一定程度,,程序会出现异常跑飞,这时候看门狗就会让系统复位,以上的这些,在我们理解中是完全合理的。
不过,令我不解的是,看门狗复位之后,程序依然在跑飞的状态,这时,看门狗又让系统复位,复位后,依然在跑飞的状态…… 这样一直循环。
如果这时候断电冷启动,系统就会运行正常。 打电话到STC技术支持,问为什么看门狗复位后系统内存不清零的问题,并没有给出解决办法。
由于本人才疏学浅,所以这里,请懂的朋友给解释一下问题的原因和解决办法!
谢谢大家!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
/*--------------------------------------------------*/
/*函数名:WDT初始化 */
/*参 数:无 */
/*返回值:无 */
/*--------------------------------------------------*/
void WDT_Init()
{
WDT_CONTR = 0x06; //看门狗定时器溢出时间计算公式: (12 * 32768 * PS) / FOSC (秒)
//设置看门狗定时器分频数为128,溢出时间如下:
//11.0592M : 4.55s
//12M : 4.19
//24M :2.097
WDT_CONTR |= 0x20; //启动看门狗
WDT_CONTR |= 0x10; //清零看门狗 //喂狗
//IAP_CONTR = 0x20; //手动软件复位,系统重新从用户代码区开始运行程序
//IAP_CONTR = 0x60; //手动软件复位,系统重新从ISP代码区开始运行程序
IAP_CONTR = 0x40; //看门狗软件复位,系统重新从ISP代码区开始运行程序
//SWBS/IAP_C_CONTR.6的值为1,则看门口复位状态结束后上述系列单片机将从系统监控程序启动
//SWBS/IAP_C_CONTR.6的值为0,则看门口复位状态结束后上述系列单片机将从用户应用程序启动
}
这部分也仔细看了。
一周热门 更多>