STC单片机启动“看门狗”后,第一次接收或发送串口数据时,程序都会复位。
复位一次后,再进行串口操作就不会再复位。冷起动单片机后又会重现首次串口发送或接收数据再现复位。不知是何原因?请高手指点!...
复位一次后,再进行串口操作就不会再复位。冷起动单片机后又会重现首次串口发送或接收数据再现复位。不知是何原因?请高手指点!
展开
4个回答
展开全部
基本上应该是程序原因,建议楼主贴出来让大家一起参考,特别是看门狗启动部分、串口接收发送部分
更多追问追答
追问
程序太大了,这里贴不出来,就算贴得上来估计没有一个人有耐心把它看完连我自己都做不到。单独使用我经常用,两个一起上第一次,关健它只是第一次发送或接收数据时复位,复位之后再接收或发送都不会复位。还有一怪事我设了一个long int的变量,当计数到65535时就又重0开始计数。没办法只好设了两个int的变量才能计到99万。请问您有遇过此等事吗?
追答
我没遇到过这么怪的问题,但有一点可以肯定,既然看门狗会复位,必然你的程序中存在问题,
你没有找到问题的实质点,而试图采用其他手段隐盖这个问题,这是非常不好的,因为如果程序写的不好往往会是关联反应,到时候产品出厂后在客户那再反应出来就砸了
你原来的程序没问题那是因为那时你没用看门狗没发现而已,你可以这样试试
1、将看门狗部分单独写个程序看看有无这方面的启动问题
2、原来的程序不加内部看门狗,使用外部狗临时焊接一个试试
3、检查数据区空间是否溢出,特别是是否使用了不存在的外部空间
展开全部
我感觉会有两种情况,一、你的串口程序没有完全正确,比如说是个死循环,所以看门狗会复位,二、启动看门狗的顺序不对
更多追问追答
追问
串口程序在没加“狗”之前是能用的,这是我开发的一款实用机器,串口向上位机发送数据,同时接收上位机来的数据,数据量很少。这款机器在现场使用的时候有时在马达堵转电源电压降低时程序有时会“跑飞”,所以我现在想养条狗,就出现了上述问题。
追答
你的电压跟不上MCU的最低要求,程序肯定不能正确执行,要不你试试电压正常的情况下会不会跑飞,然后,看门狗应该就是一句程序的事吧。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
程序设计 不合理, 才会引起 来不及 喂狗,产生复位。
追问
一定不是这个问题,程序运行后进入“大循环”,只有首次才会复位,就算把时间调到5秒都是一样。实际运用只有500毫秒。串口收发数据没有可能超过5秒,11个字符最多只有几毫秒。
追答
所以说 是 程序设计 不合理,合理设计程序,
不管是第一次 或者 不管发送 多少字节都不会产生复位。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
概念及其应用在由单片机构成的系统中,由于单片机的工作有可能会受到来自外界电磁场的干扰,造成程序的跑飞,从而陷入死循环,程序的正常运行被打断,由单片机控制的系统便无法继续工作,这样会造成整个系统陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询