本帖最后由 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,则看门口复位状态结束后上述系列单片机将从用户应用程序启动
}
这部分也仔细看了。
这只是初始化,并不说明复位后没有区别对待
从复位地址开始看下,启动代码里有没有什么特别情况
STC手册和别的厂家的比真是一团乱,我没找到这方面说明。
这个问题应该容易处理,
我也用STC的芯片啊
软件复位后很正常啊
WDT没试过
你把起动代码发上来看下
前些日子一块新板子遇到上电后频繁复位的情况,查明是AD芯片引脚虚焊导致的,但我在等待AD的RDY信号的时候,我频繁调用休眠和喂狗指令的,不知道为何还会导致看门狗复位,因为很快排除了虚焊问题,所以也没有深究,只是表示了疑惑不解。
一周热门 更多>