STC15W4K系列单片机,看门狗复位后系统内存不清零的问题!

2020-03-07 17:54发布

本帖最后由 QQ826220679 于 2020-1-21 13:44 编辑

最近在做一个项目,用到了STC15W4K56S4单片机,程序开启了看门狗,由于和外部通讯,当通讯数据量大到一定程度,,程序会出现异常跑飞,这时候看门狗就会让系统复位,以上的这些,在我们理解中是完全合理的。

不过,令我不解的是,看门狗复位之后,程序依然在跑飞的状态,这时,看门狗又让系统复位,复位后,依然在跑飞的状态…… 这样一直循环。
如果这时候断电冷启动,系统就会运行正常。 打电话到STC技术支持,问为什么看门狗复位后系统内存不清零的问题,并没有给出解决办法。

由于本人才疏学浅,所以这里,请懂的朋友给解释一下问题的原因和解决办法!

谢谢大家!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
15条回答
QQ826220679
2020-03-08 17:53
ayb_ice 发表于 2020-1-21 14:16
还要看程序本身有没有区别对待冷起动与热起动(WDT动作)

/*--------------------------------------------------*/
/*函数名: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,则看门口复位状态结束后上述系列单片机将从用户应用程序启动
}

这部分也仔细看了。

一周热门 更多>