STM8拥有两个硬件看门狗,分别叫做独立看门狗和窗口看门狗

独立看门狗的框图如下

我们可以看到,独立看门狗的时钟来自于LSI内部低速振荡器,经过二分频到达看门狗外设单元,在经过一个七位的预分频到达计数器,这个七位的分频由PR控制,看门狗内部使用一个八位的向下计数计数器来计数,计数到0的时候发出看门狗复位信号,同时有一个RLR可以存放看门狗的初始化值,但对KR操作的时候看门狗计数器重载RLR的数据,达到喂狗目的

所以,对看门狗的处理应该分为以下步骤

1.      关闭看门狗

2.      启动LSI系统低速时钟

3.      设置时钟的分频系数

4.      设置看门狗重载的值

5.      在没有复位之前喂狗,重新计数

相关寄存器如下

使用方法见以下代码

  1. #ifndef __IWDG_H_
  2. #define __IWDG_H_
  3. #include "stm8s.h"
  4.  
  5. void IWDGInit(void);//默认计数时间一s
  6.  
  7. void IWDGFeed(void);
  8.  
  9. #endif
  1. #include "iwdg.h"
  2.  
  3. void IWDGInit(void) //默认计数时间一分钟
  4. {
  5. //首先打开LSI时钟
  6. CLK->ICKR |= (1<<3);
  7. while((CLK->ICKR&(1<<4)) == 0);//等待时钟稳定
  8. IWDG->KR = 0x55;//写入解锁
  9. IWDG->PR = 0x06;//分频64K /256 = 250
  10. IWDG->RLR = 250;//计数值250 1复位
  11. IWDG->KR = 0xaa;//锁定并刷新分频器
  12. IWDG->KR = 0xcc;//启动独立看门狗
  13.  
  14. }
  15.  
  16. void IWDGFeed(void)
  17. {
  18. IWDG->KR = 0xaa;//锁定并刷新分频器
  19. }

窗口看门狗这是另一种模式,芯片定义了一个下线,低于0x40的时候产生复位,同时定义了一个上限,高于上限的时候喂狗同样产生复位

窗口看门狗的时钟来自于cpu时钟,分频数为12288,使用看门狗过程如下

1设置窗口值

2设置当前计数值

3启动看门狗

窗口看门狗一旦启动无法关闭,除非发生复位系统自动关闭,具体使用查看代码

  1. #ifndef __WWDG_H_
  2. #define __WWDG_H_
  3. #include "stm8s.h"
  4.  
  5. void WWDGInit(void);
  6.  
  7. void WWDGFeed(void);
  8.  
  9. #endif
  1. #include "wwdg.h"
  2.  
  3. void WWDGInit(void)
  4. {
  5. if((WWDG->CR&0x80) == 1)
  6. {
  7. return;
  8. }
  9. else
  10. {
  11. WWDG->WR = 0x60;
  12. WWDG->CR = 0xff;
  13. }
  14. }
  15.  
  16. void WWDGFeed(void)
  17. {
  18. u8 windows = WWDG->WR ;
  19. if((WWDG->CR&0x7f)>=windows)
  20. return;
  21. else
  22. WWDG->CR |= 0x7f;
  23. }

stm8的独立看门狗与窗口看门狗的更多相关文章

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

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

  2. STM8S103之独立看门狗和窗口看门狗

    独立看门狗时钟来源为LSI:窗口看门狗时钟来源为CPU: 窗口看门狗窗口的含义是:喂狗必须在一定的窗口期内完成,不能过早也不能过晚. 总结:防止程序复位,用独立看门狗. 独立看门狗使用的流程:参见库函 ...

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

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

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

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

  5. 嵌入式02 STM32 实验09 独立/窗口看门狗

    一.独立看门狗和窗口看门狗 看门狗:单片机系统在外界的干扰下会出现程序跑飞的现象导致死循环,或者崩溃,看门狗电路就是为了避免这种情况的发生,看门狗的作用就是在一定的事件内(通过计数器实现)若没有收到喂 ...

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

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

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

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

  8. STM8s窗口看门狗

    看看窗口看门狗的框图 从图里看出产生复位信号有2个方式: 1 WDGCR寄存器的T6 由1变0,也就是从此寄存器的值从0x40变成0x3F会产生复位信号: 2 当寄存器WDGCR的值大于WDGWR的时 ...

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

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

随机推荐

  1. SqlServer 查询死锁,杀死死锁进程

    -- 查询死锁 select request_session_id spid, OBJECT_NAME(resource_associated_entity_id) tableName from sy ...

  2. jdk,tomcat配置

    方法/步骤 一.安装JDK和Tomcat 1,安装JDK:直接运行jdk-7-windows-i586.exe可执行程序,默认安装即可. 备注:路径可以其他盘符,不建议路径包含中文名及特殊符号. 2. ...

  3. shell写多行到文件中

    用cat或者echo命令输入多行数据到指定文本 #!/bin/sh ( cat <<EOF start() { echo "start" } EOF ) > Ma ...

  4. 11--tag 和transform属性

    tag 和transform属性 1.tag 标签,就相当于身份识别的标码,可以通过tag值获取对应的对象. 2.使用transform 实现对象的平移和旋转. // // ViewControlle ...

  5. android 5.0

    google 2014开发大会发布了全新的设计语言Material Design,并计划将其应用到Android.Chrome OS和网页等平台上,而最新发布的Android L系统就采用了这种设计语 ...

  6. C++:string类的使用

    类 <string> std::string String类的定义 , 其也是个模板类 typedef basic_string<char> string; String cl ...

  7. jq的遍历节点

    1.child()方法 该方法用于取得匹配元素的子元素集合 2.next() 该方法用于取得匹配元素后面紧邻的同辈元素, 3.prev() 该方法用于取得匹配元素前面紧邻的同辈元素 4.sibling ...

  8. Servlet程序开发-- servlet跳转

    跳转:服务器端,客户端 客户端跳转:<response.sendRedirect>地址栏跳转之后改变,无法传递request范围的属性 服务器端跳转:<jsp:forward> ...

  9. generic type

    http://docs.oracle.com/javase/tutorial/java/generics/wildcardGuidelines.html

  10. BASE64-客户端(js)加码-服务器端(c#)解码,URL传递“汉字参数”解决方法

    HttpUtility.UrlEncode 在 Encode 的时候, 将空格转换成加号('+'), 在 Decode 的时候将加号转为空格, 但是浏览器是不能理解加号为空格的, 所以如果文件名包含了 ...