0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于看门狗时间选定问题

嵌入式应用开发 来源:嵌入式应用开发 作者:嵌入式应用开发 2022-12-26 17:14 次阅读

看门狗的主要作用就是防止程序跑飞,防止堆栈数据溢出,将单片机进行重启操作,不可屏蔽中断,优先级最高。

答题的过程是这样的,计数器有一个值,不停的做减法操作,当值为0时产生复位操作,因此在程序正常运行下需要不停的喂狗操作,但是这个时间需要把握,这个时间设置成为”喂狗时间“,在喂狗异常时发生中断复位操作,这个过程是自发进行的。

下面主要说明喂狗时间的操作。

需要控制的寄存器有:

键值寄存器IWDG_KR: 0~15位有效

预分频寄存器IWDG_PR:0~2位有效。具有写保护功能,要操作先取消写保护

重装载寄存器IWDG_RLR:0~11位有效。具有写保护功能,要操作先取消写保护。

状态寄存器IWDG_SR:0~1位有效

pYYBAGOpZNiAChl4AACpOEoYIWo235.png

我的另一篇文章专门讲解了如何使用看门狗,这里不做赘述,主要说一下,这个喂狗时间如何设置,设置多长合适。

这里我们还是从函数计数开始说。

设置看门狗的分频系数的函数是:
//设置 IWDG 预分频值
void IWDG_SetPrescaler(uint8_t IWDG_Prescaler);
设置看门狗的重装载值的函数是:
//设置 IWDG 重装载值
void IWDG_SetReload(uint16_t Reload);
设置好看门狗的分频系数 prer 和重装载值就可以知道看门狗的喂时间(也就是看门狗溢出时间) ,该时间的计算方式为(以时钟40KHZ计算):
Tout=((4×2^prer) ×rlr) /40
Tout 为看门狗溢出时间(单位为 ms);prer为看门狗时钟预分频(IWDG_PR 值),范围为 0~7;rlr 为看门狗的重装载值(IWDG_RLR 的值) ;我们设定 prer 值为 4, rlr 值为 625, 那么就可以得到 Tout=64×625/40=1000ms, 这样,看门狗的溢出时间就是 1s,只要你在一秒钟之内,有一次写入 0XAAAA 到 IWDG_KR,就不会导致看门狗复位。
注意:看门狗的时钟频率并不是确定不变的40KHZ(而是在 15~47Khz 之间的一个可变化的时钟),必须控制好大概复位时间。

综上所述只需要根据自己的需要进行设置相应的参数即可,这里提供相关的经验给大家参考,一般情况下我们都设置喂狗时间为1s当有特别的任务需要进行检测时需要根据特定的任务进行设置喂狗时间,假设有一个非常重要的进程,需要及时的进行检测,这里就要设置特定的时间,比如100ms一次喂狗等操作。

审核编辑黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 看门狗
    +关注

    关注

    10

    文章

    541

    浏览量

    70257
收藏 人收藏

    评论

    相关推荐

    STM32L031独立看门狗切换时间慢影响实时性怎么解决?

    目前在做一个项目时候遇到一个非常棘手的问题,希望在这和大家讨论一下,如果有人有什么好的建议请给在下指条路子。 一、产品的具体流程如下:1、在run 模式工作75ms 左右,此时设置独立看门狗时间
    发表于 04-28 06:40

    求助,关于看门狗定时器的喂狗时间和多APP看门狗的问题求解

    参考例程,在看门狗定时器时间的配置上,我看到如下函数: /* Step 3- Write match value */ #if(WDT_DEMO == WDT_INTERRUPT_DEMO
    发表于 02-21 06:50

    ADUC7024的看门狗能不能在看门狗定时没有到之前,将看门狗给关了啊?

    ADUC7024的看门狗能不能在看门狗定时没有到之前(即没有复位之前),将看门狗给关了啊?
    发表于 01-15 08:17

    看门狗要如何使用?

    虽然知道看门狗的作用,不过还是不太明白看门狗要如何使用。 看门狗的作用是在程序跑飞的情况下让系统能够及时复位重新开始执行程序,道理很简单,但是程序如何跑飞呢? 如果是一段程序需要延时等待,这个不算跑飞吧,应该是正常执行。所以这种
    发表于 11-06 07:02

    AT32F4xx看门狗的使用

    AT32F4xx看门狗的使用本示例展示了如何使用AT32F4xx系列的看门狗(WDT)。
    发表于 10-26 06:03

    如何理解看门狗

    一直不是很理解看门狗,有什么方法可以快捷理解吗?
    发表于 10-25 06:13

    请问STM32的独立看门狗和窗口看门狗有什么主要的区别?

    STM32的独立看门狗和窗口看门狗有什么主要的区别?
    发表于 10-15 06:44

    硬件看门狗芯片和MCU外设看门狗有什么区别?

    硬件看门狗芯片和MCU外设看门狗有什么区别
    发表于 10-09 09:04

    STM32F2独立看门狗和窗口看门狗

    结合安全度、计时精确度和易用性·监测软件跑飞,或未按预想地运行的情况 ·触发系统复位或产生中断(中断仅针对窗口看门狗)独立看门狗 ·专用时钟LSl ·低功耗模式仍可运行对定时的控制比较松 不同时钟源,不同生存周期 窗口看门狗 ·
    发表于 09-13 07:15

    STM32 ADC模拟看门狗及应用

    模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高低阈值,用户可以预先设定个模拟看门狗的上下限电压值,一旦采集到的电压超出该上下限,将会触发模拟看门狗中断。模拟看门狗一般用于检
    发表于 09-08 06:26

    硬件看门狗在操作系统下是怎么用的?

    关于软件看门狗:在裸机程序下软件看门狗,大家都会在必要的地方喂狗保证看门狗有效;但在微操作系统下,程序的流向都是在操作系统下调度的,这种情况下怎么估算喂狗最大
    发表于 09-07 16:49

    看门狗的基本原理和RV-STAR独立看门狗(FWDGT)的使用方法

    设置一个超时时间,然后程序在超时时间内定期对定时器进行重载操作(也叫做“喂狗”操作),从而避免正常程序发生复位。 当系统发生意料之外的故障使得软件跑飞,看门狗定时器无法被按时重载时,看门狗
    发表于 08-16 08:13

    窗口看门狗是什么?

    窗口看门狗定时器用来在一个指定的窗周期中实现系统复位,避免软件无限期进入不可控状态。
    发表于 06-25 06:13

    MPC885启动后一段时间禁用看门狗是怎么回事?

    我们使用基于 MPC885 处理器的设备。我们希望能够在软件启动后的某个时间禁用软件看门狗。我们不会在设备启动时写入 SYPCR 寄存器。该寄存器在启动后一段时间被读取,观察到该寄存器包含默认值
    发表于 05-12 08:41

    关于独立看门狗的一点经验

    stm32基本都内置两种看门狗(另外还有外置的看门狗芯片),窗口看门狗和独立看门狗,两种看门狗的使用方法和应用场景各不相同,今天主要讲讲最常
    发表于 05-09 11:18 422次阅读
    <b class='flag-5'>关于</b>独立<b class='flag-5'>看门狗</b>的一点经验