• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

你家的那狗你怎么喂啊?

瞎折腾 2016-09-16 浏览量:1030
对搞软件的“狗”这个词并不陌生吧,为了防止芯片跑飞,都会有个看门狗,有的还要弄个外带的狗,既然有狗就要经常喂,不然就会出乱子,但是这个狗怎么喂,大程序里的时间怎么算?多长时间喂一回?希望能有人详细的回答一下。

2 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 本帖最后由 SingleYork 于 2016-9-16 22:22 编辑

    按时间喂,就拿STC15F2K60S2单片机来举例简单说下吧:

    首先,STC15F2K60S2单片机对看门狗的操作,如:启动看门狗、停止看门狗、设置看门狗的溢出时间等,都是通过控制看门狗的专用特殊功能寄存器WDT的相应位来实现的。这个WDT寄存器各个位的定义如下:




    其中,WDT_FLAG:为看门狗溢出标志位,当溢出时,该位由硬件置1,可用软件清零;
    EN_WDT:看门狗允许位,当设置为1时,看门狗启动;
    CLR_WDT:看门狗清零,当设置为1时,看门狗将重新计数,硬件可自动清零此位;
    IDLE_WDT:看门狗IDLE(空闲)模式位,当设置为1时,看门狗定时器在“空闲模式”计数,当清零该位时,看门狗定时器在“空闲模式”时不计数;
    PS2、PS1、PS0:看门狗定时器预分频值,其看门狗定时器预分频值与溢出时间的对应关系如下:





    STC官方给出的看门狗溢出时间、预分频和晶振的计算公式为:


    看门狗溢出时间=(12*预分频数*32768)/晶振频率


    在实际应用中,需要在整个大程序的不同位置喂“狗”,但每两次喂狗之间的时间间隔一定不能小于看门狗定时器的溢出时间,否则程序将会不停地复位。



    • 发布于 2016-09-16
    • 举报
    • 评论 0
    • 2
    • 0

其他答案 数量:10
  • 一般都是main函数里面喂狗 其他中断定时器里面也有 不过很少
    • 发布于2016-09-17
    • 举报
    • 评论 0
    • 1
    • 0

  • 本帖最后由 汉云 于 2016-9-23 22:23 编辑

    总是认为内部看门狗的作用不是很大,程序或芯片问题,有可能内部的看门狗也挂掉了呢?



    • 发布于2016-09-17
    • 举报
    • 评论 0
    • 1
    • 0

  • 瞎折腾 发表于 2016-9-16 21:59
    你的傻笑叫我不理解啊!都知道按时间喂,怎么喂,在什么地方插入喂得程序 ...

    你急啥,还没写完呢,后面不是详细解释了么,难道你还要我给你写个实例程序么?那么就等我讲到这一节再说吧,呵呵……最近工作上有点事,没来得及更新帖子……
    • 发布于2016-09-16
    • 举报
    • 评论 0
    • 0
    • 0

  • 那就只能看你讲到这一节了!如果一个程序中,有大循环,有小循环的,那么在哪里喂、怎么计算时间、因为好多的东西是不允许你的程序跑飞的时间太长,还有程序跑飞前的数据怎么办?重启后怎么恢复跑飞前的程序、如果复位后数据都复位了,那就必须恢复,不然会出现很多的问题。
    • 发布于2016-09-16
    • 举报
    • 评论 0
    • 0
    • 0

  • 喂狗是不是在调用执行动作函数前或后喂呢,main主循环里面
    • 发布于2016-09-16
    • 举报
    • 评论 0
    • 0
    • 0

  • 汉云 发表于 2016-9-17 13:30
    总是认为内部看门狗的作用不是很大,程序或芯片问题,有可能内部的看门狗也挂掉了呢?
    所以一般我是用外部 ...

    看门狗好像在设计产品的时候很重要的吧,一般玩单片机的时候倒是没有在意这个
    • 发布于2016-09-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 一是主函数里喂狗,看程序时间复杂度给予喂狗的位置
    二是定时中断里喂狗,定时要小于喂狗的极限时间
    • 发布于2016-09-19
    • 举报
    • 评论 0
    • 0
    • 0

  • 说白了就是定时器,如果用不到,就不要用了,没必要非得用dog
    • 发布于2016-09-19
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

你家的那狗你怎么喂啊?