看看窗口看门狗的框图

从图里看出产生复位信号有2个方式:

1 WDGCR寄存器的T6 由1变0,也就是从此寄存器的值从0x40变成0x3F会产生复位信号;

2 当寄存器WDGCR的值大于WDGWR的时候写WDGCR寄存器会产生复位信号;

解释:

  WDGCR的最高位WDGA是开启看门狗的(WDGA=1开启),当然如果开启了硬件看门狗这个位就没用了。硬件看门狗在OPTION BYTES里设置。

WDGCR的低六位是计数用的从图里可以得出这个计数器的时钟是fCPU时钟分频得来的。这个分频值固定是12288,根据这个可以计算看门狗的延时时间。

WDGWR是窗口寄存器,最高位保留,低六位保存的是窗口值,从图里的逻辑图发现comparator=1 when T6:0>W6:0,意思是当WDGCR计数值大于WDGCR

且此时Write WDGCR(这个意思是软件刷新计数器的值)就会产生一个复位信号复位stm8s。当然我们不想这个事情发送。所以在写程序的时候不能在计时器的值

大于窗口寄存器设定值的时候刷新计数器的值。所以在设定这个窗口寄存器数值的时候只能设定在0x7f~0xC0之间。

程序:

  知道窗口电子狗怎么工作那么编程就好说了,三件事:

1  设定窗口寄存器值,开启看门狗(WDGA=1),这是初始化看门狗

2  判断看门狗计数值是否小于窗口值,是就喂狗

代码如下:

  用stm8s的官方库。

  WWDG_Init(0x7f, 0x50);  //初始化

  CounterValue = (u8)WWDG->CR & 0x7F;
  if(CounterValue < WINDOW){
    WWDG_SetCounter(COUNTERINIT); //喂狗
  }

解释一下WWDG_Init这个函数体的内容是:

void WWDG_Init(uint8_t Counter, uint8_t WindowValue)
{
/* Check the parameters */
  assert_param(IS_WWDG_WINDOWLIMITVALUE_OK(WindowValue));

  WWDG->WR = WWDG_WR_RESET_VALUE;
  WWDG->CR = (uint8_t)((uint8_t)(WWDG_CR_WDGA | WWDG_CR_T6) | (uint8_t)Counter);
  WWDG->WR = (uint8_t)((uint8_t)(~WWDG_CR_WDGA) & (uint8_t)(WWDG_CR_T6 | WindowValue));
}

WWDG_SetCounter的源码是:

void WWDG_SetCounter(uint8_t Counter)
{

  /* Check the parameters */
  assert_param(IS_WWDG_COUNTERVALUE_OK(Counter));

  /* Write to T[6:0] bits to configure the counter value, no need to do
  a read-modify-write; writing a 0 to WDGA bit does nothing */
  WWDG->CR = (uint8_t)(Counter & (uint8_t)BIT_MASK);

}

assert_param是参数检查,其他没啥好说的。搞清楚寄存器作用就行了。其他问题暂时想不起来。哦,对了延时时间看下图:

这里说得比较清楚如果stm8用的是内部HSI 16M晶振切fCPU的分频也是0那么窗口看门狗的时钟频率就是fCPU/12288,那么一个计时周期就是12288/fCPU就是0.768ms

如果设定的窗口值是0x50,那么从0x7F数下来一算就知道了。0.768*(0x7f-0x50)。要注意这里fCPU不一定是16m(CPUDIV分频系数可以改变),如果要搞清楚stm8的时钟频率看下面这个图。这里就不做详细讨论了,以后在说。

STM8s窗口看门狗的更多相关文章

  1. stm8的独立看门狗与窗口看门狗

    STM8拥有两个硬件看门狗,分别叫做独立看门狗和窗口看门狗 独立看门狗的框图如下 我们可以看到,独立看门狗的时钟来自于LSI内部低速振荡器,经过二分频到达看门狗外设单元,在经过一个七位的预分频到达计数 ...

  2. STM32之独立看门狗与窗口看门狗总结

    一.独立看门狗 STM32 的独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效. 看门狗的原理:单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路 ...

  3. STM32之独立看门狗(IWDG)与窗口看门狗(WWDG)总结

    一.独立看门狗 STM32 的独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效. 看门狗的原理:单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路 ...

  4. STM32(10)——窗口看门狗

    简介: 窗口看门狗(WWDG)通常被用来监测由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障.除非递减计数器的值在 T6 位 (WWDG->CR 的第六位)变成 0 ...

  5. stm32 窗口看门狗学习(二)

    窗口看门狗有一个提前唤醒中断,如果开启这个中断,那么当计数器的值达到0x40的时候就会产生这个中断. 上次的代码加一点就可以做这个实验了. void WWDG_Init(u8 tr,u8 wr,u32 ...

  6. stm32 窗口看门狗学习(一)

    什么是窗口看门狗? 1)独立看门狗                限制喂狗时间在0-x内,x由相关寄存器决定.喂狗的时间不能过晚. 2)窗口看门狗               之所以称为窗口就是因为其 ...

  7. 第35章 WWDG—窗口看门狗—零死角玩转STM32-F429系列

    第35章     WWDG—窗口看门狗 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fir ...

  8. STM32F407 窗口看门狗 个人笔记

    窗口看门狗的喂狗时间范围 由框图知: 复位条件是:当且仅当 { 启动位启动 且 { T6为0 (计数器的值减小到0X03F即下限,还没喂狗,即喂狗太晚) 或 计数器的值高于上限时喂狗,即喂狗太早 } ...

  9. STM32窗口看门狗和独立看门狗的区别,看门狗介绍及代码演示

    一.介绍: STM32看门狗分为独立看门狗和窗口看门狗两种,其两者使用调条件如下所示, IWDG和WWDG两者特点如下图所示: 独立看门狗的手册资料: 窗口看门狗的手册资料:             ...

随机推荐

  1. Windows上Python2.7安装Scrapy过程

    需要执行: pip install scrapy pip install requests 在Windows下用pip安装Scrapy报如下错误,看错误提示就知道去http://aka.ms/vcpy ...

  2. Java Swing的进化

    摘 要:Swing已是一个比较老的工具集了,在美观的用户界面出来之前需要开发很长时间.它缺少一些你在开发富UI时所需的组件.幸运地是,像 Substance,SwingX及Java Look-and_ ...

  3. Duilib实现圆形头像控件

    .h文件 #ifndef __UIHEADICON_H__ #define __UIHEADICON_H__ /* 名称:圆形头像控件(派生CButtonUI类) */ class CHeadUI: ...

  4. Windows 多线程知识点汇总

    一.什么叫原子性? 答:一个操作不会被分成两个时间片来执行,不会刚执行到一半,由于时间片到了,CPU就跑去执行其他线程了.在多线程环境中对一个变量进行读写时,我们需要有一种方法能够保证对一个值的操作是 ...

  5. SqlSever基础 order by之后再orderby,双重排序,对排序好的数据中再次进行排序

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  6. Linux中安装Cisco Packet Tracer

    Cisco Packet tracer是什么? Cisco Packet Tracer是一个强大的网络模拟工具,用于进行Cisco认证时的培训.它为我们 提供了各个路由器和网络设备的良好的接口视图,这 ...

  7. Tar命令用法详解

    tar -c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个.下面的 ...

  8. C#获取百度新歌TOP50

    先上软件效果图 代码如下1.根据Url地址得到网页的html源码 public static string GetWebContent(string Url) { string strResult = ...

  9. Using Pre-Form Trigger In Oracle Forms

    Pre-Form trigger in Oracle Forms fires during the form start-up, before forms navigates to the first ...

  10. firefox 安装flash插件

    第一步下载并解压flash解压出一个文件:libflashplayer.so 和文件夹usr 第二步查找plugins其他程序或许也有这个文件夹所以先查找firefox在查找mozilla看在哪个文件 ...