STM32之看门狗(IWDG)

一、看门狗外设的原理与应用

  • 背景说明

随着单片机的发展,单片机在家用电器、工业自动化、生产过程控制、智能仪器仪表等领域的应用越来越广泛。然而处于同一电力系统中的各种电气设备通过电或磁的联系彼此紧密相连,相互影响,由于运行方式的改变、故障、开关操作等引起的电磁振荡会波及很多电气设备。这对我们单片机系统的可靠性与安全性构成了极大的威胁。单片机测控系统必须长期稳定、可靠运行,否则将导致控制误差加大,严重时会使系统失灵,甚至造成巨大损失。因此单片机的抗干扰能力已经成为不容忽视的问题。

  • 基本概念

由于单片机在运行的过程经常会受到外部电磁场的干扰,就可能会出现程序"跑飞",比如出现数据的缺失、导致寄存器中的数据发生变化、程序指针PC指向非法地址........,为了提高程序的可靠性,就提供了看门狗外设,在程序出现由软件或者硬件导致的未知问题,利用看门狗外设对芯片进行复位,相当于重新运行程序。

看门狗(WatchDog Timer),本质上就是一个定时器电路,一般有一个输入和一个输出,输出端连接到到MCU的RST引脚,当MCU正常工作的时候,每隔一段时间输出一个信号到看门狗的输入端,如果超过规定的时间不喂狗(一般在程序跑飞时),看门狗就会给出一个复位信号到MCU,使MCU复位。

  • 实现原理

使用看门狗的目的:为了提供程序的可靠性,防止由软件或者硬件造成的问题的出现。如果想要了解看门狗的资源和特点,可以参考STM32F4中文参考手册。

  • 分类说明

STM32F4系列的芯片提供的两个看门狗,一个叫做独立看门狗,一个叫做窗口看门狗。两个看门狗的使用流程差不多,但是相比于独立看门狗,窗口看门狗的限制更严格。

  1. 窗口看门狗
  1. 独立看门狗
  • 内部结构
  • 程序设计

思考:如果出现芯片复位的情况,如何判断是用户手动完成复位还是由IWDG看门狗复位??

  • 喂狗技巧

一种方案是在代码段进行穿插喂狗,操作起来比较麻烦,另一种方案是在定时器中断中完成喂狗操作,但是注意中断请求可能出现嵌套,所以喂狗操作的定时器的中断的抢占优先级应该是在程序中所有中断里面是最高。

为了提高程序的可靠性,应该定义一个标志位,应该结合该标志位来判断程序的运行状态。

练习:根据看门狗的原理,实现掌握MCU中的窗口看门狗的使用流程,另外,要求在自己的程序中实现看门狗的监测,并对PS2模块、光敏、温湿度进行测试,然后把之前学习的外设的程序进行封装,封装为xxx.c和xxx.h。

相关推荐
MaoXian_n44 分钟前
[ARM][汇编] 02.ARM 汇编常用简单指令
arm开发·驱动开发·单片机·嵌入式硬件
厦门辰迈智慧科技有限公司2 小时前
水利数据采集MCU水资源的智能守护者
单片机·嵌入式硬件
真的想上岸啊2 小时前
学习STC51单片机14(芯片为STC89C52RC)
单片机·嵌入式硬件·学习
硬核科技2 小时前
超时处理机制设计:从TICK到回调
单片机·嵌入式硬件·嵌入式·编程·嵌入式软件·软件
无垠的广袤3 小时前
【萤火工场GD32VW553-IOT开发板】ADC电压的LabVIEW采集
c++·单片机·嵌入式硬件·物联网·labview
哄娃睡觉5 小时前
stm32上拉电阻,1K,4.7K,5.6K,10K怎么选?
stm32
HEY_FLYINGPIG6 小时前
(2025小白全踩坑版)【OpenHarmony】移植 3.1 版本系统到 STM32F407ZG开发板
stm32·单片机·嵌入式硬件
weixin_472339468 小时前
Arduino和STM32的区别详解
stm32·单片机·嵌入式硬件
让子弹飞0213 小时前
Keil软件中STM32(ARM)与C51兼容方法
arm开发·stm32·嵌入式硬件