看看窗口看门狗的框图

从图里看出产生复位信号有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. MSSQL删除字段时出现 服务器: 消息 5074,级别 16,状态 1,行 1 的解决办法

    有的朋友在做用户维护字段的界面时,肯定发现一个问题,当用脚本:ALTER TABLE 表名 DROP COLUMN 字段名进行删除字段的操作时,会出现“服务器: 消息 5074,级别 16,状态 1, ...

  2. range函数

    th> a=torch.range(,) [.0001s] th> a [torch.DoubleTensor of size ] [.0002s] th> a=torch.rang ...

  3. FlashFXP命令行

    flashfxp.exe -upload ftp://user:pass@ip:port -localpath="本地路径"  -remotepath="远程FTP上的路 ...

  4. xcode下载地址

    本帖最后由 tsingjun 于 12/9/20 04:46 PM 编辑 Xcode 4.4.1正式版下载地址 http://kuai.xunlei.com/d/UXZFTWONQLUD XCode ...

  5. nginx配置404

    1.创建一个404错误时显示的页面 2.在nginx.conf中的http区域加入: fastcgi_intercept_errors on; 3.在nginx.conf的server区域(如果网站有 ...

  6. C#部署安装,将用户安装路径记录下写入注册表,并启动

    安装部署程序,将安装目录写入注册表 (1)在“安装部署项目”上点击“注册表编辑器” (2)在HKey_LOCAL_MACHINE_SoftWare 下新建键 Manufacturer 代表软件的制造商 ...

  7. JAVA 语言基础——运算符

    1.赋值运算符 赋值运算符"=",是一个能对两个操作数进行处理的二元运算符. 比如: int a = 12;  //声明int型变量a int b= 34; //声明int型变量b ...

  8. mimikatz2.0抓取WINDOWS密码

    看吾爱的,刚好问同事说这个也用过,以后内网渗透的话比较方便 http://www.52pojie.cn/thread-264895-1-1.html ========================= ...

  9. Mybatis+struts2+spring整合

    把student项目改造成ssm  struts2 +mybatis+spring 1,先添加spring支持:类库三个,applicationContext.xml写在webinf下四个命名空间,监 ...

  10. FZU 2216 The Longest Straight(最长直道)

    Description 题目描述 ZB is playing a card game where the goal is to make straights. Each card in the dec ...