目录
背景
独立看门狗(IWDG)
寄存器访问保护
窗口看门狗(WWDG)
程序
独立看门狗
设置独立看门狗程序
第一步、使能对独立看门狗寄存器的写操作
第二步、设置预分频和重装载值
第三步、喂狗
第四步、使能独立看门狗
喂狗程序编辑编辑
应用实例
窗口看门狗
设置窗口看门狗程序
第一步、使能PCLK1的外设时钟
第二步、设置预分频和窗口值
第三步、使能WWDG
第四步、中断配置(清除中断标识、配置中断优先级、开启中断)
第五步、中断优先级配置
第六步、中断处理函数
第七步、窗口看门狗喂狗
应用实例
背景
看门狗在单片机系统中非常重要,主要用于防止系统死锁、处理软件故障、应对外部干扰和提高系统可靠性。由于单片机系统容易受到外界干扰导致程序跑飞或陷入死循环,看门狗机制能够在程序异常时及时重启系统,避免系统崩溃或数据丢失等严重后果,通过本篇文章介绍STM32的看门狗种类,以及如何使用这两种看门狗。
STM32看门狗主要有两种类型:独立看门狗(IWDG)和窗口看门狗(WWDG)。


独立看门狗(IWDG)
独立看门狗(IWDG)是STM32系列中常见的看门狗类型之一。它使用一个独立的40kHz低速时钟(LSI),这个时钟源是独立于主系统时钟的(所以不需要像USART等外设一样,使用前使能外设时钟),因此即使在主时钟发生故障时,IWDG仍能正常工作。IWDG通过一个12位的递减计数器工作,当计数器的值减到0时,系统会产生复位信号,重启MCU。用户需要在预定的时间内“喂狗”(即向看门狗寄存器写入一个特定的值),以重置计数器,防止系统复位


寄存器访问保护
IWDG_PR
和
IWDG_RLR
寄存器具有写保护功能。要修改这两个寄存器的值,必须先向
IWDG_KR
寄存器中写入
0x5555
。以不同的值写入这个寄存器将会打乱操作顺序,寄存器将重
新被保护。重装载操作
(
即写入
0xAAAA)
也会启动写保护功能。
状态寄存器指示预分频值和递减计数器是否正在被更新。
窗口看门狗(WWDG)
窗口看门狗(WWDG)通过APB1时钟分频后得到的时钟驱动。它与IWDG不同,WWDG有一个可配置的时间窗口,用于检测应用程序的运行状态。如果应用程序在这个时间窗口内正常运行,则不会产生复位信号;如果应用程序超出这个时间窗口,则会触发复位信号,重启系统
WWDG
简介
窗口看门狗通常被用来监测,由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运
行序列而产生的软件故障。除非递减计数器的值在
T6
位变成
0
前被刷新,看门狗电路在达到预置
的时间周期时,会产生一个
MCU
复位。在递减计数器达到窗口寄存器数值之前,如果
7位的递减
计数器数值(在控制寄存器中)
被刷新, 那么也将产生一个
MCU
复位。这表明递减计数器需要在
一个有限的时间窗口中被刷新。
WWDG
主要特性
● 可编程的自由运行递减计数器
● 条件复位
─
当递减计数器的值小于0x40,(若看门狗被启动)则产生复位
。
─