“你喂狗了吗?”当你听到这句话时,不要以为是喂狗,闹笑话就不好了,这里说的喂狗是指给MCU加看门狗电路,看门狗不是“狗”,是一种MCU监控电路

什么是看门狗
在实际的MCU 应用系统中,由于常常会受到来自外界的某些干扰,有可能造成程序跑飞而进入死循环,从而导致整个系统的陷入停滞状态并且不会自动恢复到可控的工作状态。所以出于对MCU 运行的安全考虑,便引入了一种专门的复位监控电路WatchDog,俗称看门狗。看门狗电路所起的作用是一旦MCU 运行出现故障,就强制对MCU 进行硬件复位,使整个系统重新处于可控状态

看门狗分为硬件看门狗和软件看门狗
硬件看门狗
硬件看门狗是通过使用外围电路,通过电路来复位芯片来达到对电路重启的功能。本次使用芯片SP706来监控MCU,SP706芯片有以下特点:
分为4 个子型号: SP706P、SP706R、SP706S、SP706T
1 复位输出: P 为高电平有效, R/S/T 为低电平有效
2 精密的低电压监控: P/R 为2.63V 、S 为2.93V、T 为3.08V
3 复位脉冲宽度: 200ms(额定值)
4 独立的看门狗定时器: 1.6 秒超时(额定值)
5 去抖TTL/CMOS 手动复位输入( /MR 管脚)
其中SP706P复位输出高电平,SP706R/S/T复位输出低电平
STM32芯片是低电平复位,所以使用SP706R/S/T系列
硬件电路

两根信号线,MCU的I/0口连到SP706的WDI,信号发送PWM波
SP706的输出RST连到复位引脚
SP706的工作原理:SP706上电工作之后,WDI引脚保持高电平或者低电平不变 ,则1.6S之后,SP706内部的看门狗定时器会溢出并使RST输出低电平使MCU复位,所以需要在MCU复位之前及翻转WDI的状态,SP706正常工作两种状态:
1.定时器生产PWM波
2.使I/O口在1.6s内改变状态一次
软件看门狗:使用软件看门狗分为独立看门狗和窗口看门狗
独立看门狗:独立看门狗是一个12位的递减计数器,当计数器的值从某个值递减到0时,系统就会产生一个复位信号,如果递减计数到0之前,刷新了计数值的话,就不会产生复位信号
使用独立看门狗要先配置IWDG,使他产生一个计数多少时间的计数器,然后喂狗

IWDG配置主要有几点:
计数器时钟:看门股时钟由LSI经过8位预分频器得到,可以操作IWDG_PR预分频寄存器来设置分频因子,分频因子可以是:[4,8,16,32,64,128,256,256],计数器时钟:=40/42^PRV
重装载计数器:重装载计数器是一个12位的寄存器,里面装着要刷新到计数器的值,这个值是计数器要计数的时间,时间=(4
2^prv)/40*rlv(s) rlv是重装载计数器的值,
IWDG配置

void IWDG_Config(uint8_t prv ,uint16_t rlv)
{   // ʹÄÜ Ô¤·ÖƵ¼Ä´æÆ÷PRºÍÖØ×°ÔؼĴæÆ÷RLR¿ÉдIWDG_WriteAccessCmd( IWDG_WriteAccess_Enable );// ÉèÖÃÔ¤·ÖƵÆ÷ÖµIWDG_SetPrescaler( prv );// ÉèÖÃÖØ×°ÔؼĴæÆ÷ÖµIWDG_SetReload( rlv );// °ÑÖØ×°ÔؼĴæÆ÷µÄÖµ·Åµ½¼ÆÊýÆ÷ÖÐIWDG_ReloadCounter();// ʹÄÜ IWDGIWDG_Enable();
}

喂狗:喂狗一次调用一次IWDG_Feed函数

void IWDG_Feed(void)
{// °ÑÖØ×°ÔؼĴæÆ÷µÄÖµ·Åµ½¼ÆÊýÆ÷ÖУ¬Î¹¹·£¬·ÀÖ¹IWDG¸´Î»// µ±¼ÆÊýÆ÷µÄÖµ¼õµ½0µÄʱºò»á²úÉúϵͳ¸´Î»IWDG_ReloadCounter();
}

窗口看门狗:窗口看门狗与独立看门狗都是递减计数,但是窗口看门狗可以设计数上限 和下限,递减计数到某一个数之前”喂狗”的话也会产生一次复位,递减计数到下限产生一次复位信号,所以看门狗计数器的值必须在上限与下限之间,在上限与下限之间喂狗。

WWDG配置主要有以下几点:
看门狗时钟:由APB1分频得到,最大时钟频率36MHZ
计数器时钟:等于CNT_CK=PCLK1/4096/(2^WDGTB)
计数器:窗口看门狗是一个递减计数器,共7位,0X40是看门狗能够递减的最小值,最大值是0X7F
窗口值:窗口值要在0X40到0X7F之间,在窗口值与0X40之间喂狗一次,窗口值设置大小根据要计时的时间来设置
计时时间计算如下

WWDG配置:

10 void WWDG_Config(uint8_t tr, uint8_t wr, uint32_t prv)
11 {12 // 开启 WWDG 时钟
13 RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);
14
15 // 设置递减计数器的值
16 WWDG_SetCounter( tr );
17
18 // 设置预分频器的值
19 WWDG_SetPrescaler( prv );
20
21 // 设置上窗口值
22 WWDG_SetWindowValue( wr );
23
24 // 设置计数器的值,使能WWDG
25 WWDG_Enable(WWDG_CNT);
26
27 // 清除提前唤醒中断标志位
28 WWDG_ClearFlag();
29 // 配置WWDG 中断优先级
30 WWDG_NVIC_Config();
31 // 开WWDG 中断
32 WWDG_EnableIT();
33 }

tr是计数器的值,WR是上窗口的值,prv是预分频的值
喂狗:

void WWDG_Feed(void)
3 {4 // 喂狗,刷新递减计数器的值,设置成最大WDG_CNT=0X7F
5 WWDG_SetCounter( WWDG_CNT );
6 }

SP706看门狗使用记录相关推荐

  1. 服务器看门狗芯片电路图,SP706看门狗芯片SP706应用电路图.pdf

    SP706看门狗芯片SP706应用电路图 Tel (020 Fax 1 (WatchDog) 1 1.1 1 1.2 WatchDog2 1.3 3 1.4 WatchDog3 1.5 WatchDo ...

  2. 基于RT1052 Awroks 使能看门狗记录(二)

    本文主要是通过迁移的思维,记录本人初次使用周立功的Aworks框架进行BSP开发 1. 首先阅读原理图 正常来说看门狗超时,CPU会直接复位,有时会要求输出复位脉冲.这个功能可以使能,也可以不使能. ...

  3. 问题记录远程烧录和看门狗冲突

    问题记录远程烧录和看门狗冲突 文章目录 目录 文章目录 问题描述 1.问题分析 2.结论 二.IAP简介 2.1.正常情况下代码执行流程 2.2 IPA之后代码运行情况 2.3 远程烧录功能实现流程图 ...

  4. 看门狗芯片-SP706-调试记录

    一. 看门狗芯片 1.1 看门狗芯片与处理器引脚连接   本次主控单元使用的看门狗芯片为SP706芯片 .   引脚定义: 1.2 使能外部看门狗 (1) 看门狗芯片SP706芯片手册中的电路图: ( ...

  5. 学习记录:使用STM32F1看门狗

    目录 前言 一.独立看门狗 1.1. IWDG主要性能 1.2.IWDG功能描述 1.3.寄存器访问保护 1.4.配置独立看门狗的步骤 二.窗口看门狗 2.1.WWDG主要特性 2.2.WWDG功能描 ...

  6. (3)看门狗 WDT:基于GD32F303RCT6单片机在RT-Thread下的零基础学习记录

    使用看门狗功能,一如既往地需要先使用ENV工具,打开看门狗功能,如下图 开启后重新编译工程, 然后当我开开心心地去粘贴官方的demo(WATCHDOG设备 (rt-thread.org))(文章最后会 ...

  7. nRF52832学习记录(八、WDT看门狗 )

    nRF52832 看门狗 使用 低频时钟源(LFCLK)提供时钟,是向下计数的定时器. 启动后,看门狗加载 CRV 寄存器中的指定值.然后开始计数,当计数到0后,会溢出产生 TIMEOUT 事件.看门 ...

  8. linux看门狗树莓派,给树莓派安装看门狗

    你还在担心树莓派死机吗?给他装个看门狗吧! 什么是看门狗程序? 看门狗程序就是一个健康监控程序,每间隔一定时间(默认10秒)检查一次是否在设定的健康工作范围内,如果超过即启动硬件复位程序,让设备重新启 ...

  9. 【STM32】窗口看门狗

    00. 目录 文章目录 00. 目录 01. WWDG简介 02. WWDG主要特性 03. WWDG功能说明 04. 设置看门狗超时 05. WWDG寄存器 5.1 控制寄存器 (WWDG_CR) ...

最新文章

  1. .Net Framework 3.5 结构图
  2. 携程2019校招编程题(3)
  3. 5模型数据起别名_DMBOK 06|数据建模与设计
  4. openocd安装与调试
  5. 欧洲最大双面发电光伏项目全部采用英利组件
  6. 资源下载南方cass视频教程,包括文档,数据,很全的
  7. 手机抢答器正在替代传统抢答器
  8. Activiti工作流画图工具介绍
  9. 我被开除了。。只因为看了骂公司的帖子
  10. 【第三方互联】7、注册成为新浪微博(sina)开发者
  11. transition属性
  12. 4K分辨率火狐浏览器宋体过细解决方法
  13. 定制LK阶段开机LOGO
  14. 程序员找工作的个人经验教训以及注意事项
  15. vue+cesium实现风场
  16. 网页商品SKU(规格)选择
  17. BI平台:怎么进行报表的开发和搭建
  18. loadrunner入门教程(9) --开始录制
  19. 机器学习:BP神经网络,CNN卷积神经网络,GAN生成对抗网络
  20. 【案例】使用CSS3实现天空变化效果

热门文章

  1. POJ2993 Emag eht htiw Em Pleh
  2. 《互联网交互式服务安全管理要求》宣贯解读(完整版)
  3. matlab中fig文件编辑后再次打开出现import wizard无法显示fig图像
  4. 机器学习识别系统的度量指标
  5. STM32F40x 红外遥控器
  6. 自动化运维-Ansible 运维自动化 ( 配置管理工具 )
  7. 大数据时代数据处理技术及应用
  8. VB“Automation 错误” 或 “无法定位程序输入点 DoOpenPipeStream 于动态链接库ScrRun.dll上”...
  9. scriptmanager控件使用
  10. 使用chrome保存完整网页为长图片