[其他ST产品]

stm32独立看门狗(IWDG)

[复制链接]
874|34
手机看帖
扫描二维码
随时随地手机跟帖
kqh11a|  楼主 | 2023-7-30 15:33 | 显示全部楼层 |阅读模式
0x01 IWDG简介
STM32F10xxx内置两个看门狗,(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。

独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。

0x02 IWDG主要性能
● 自由运行的递减计数器
● 时钟由独立的RC振荡器提供(可在停止和待机模式下工作)
● 看门狗被激活后,则在计数器计数至0x000时产生复位

使用特权

评论回复
kqh11a|  楼主 | 2023-7-30 15:33 | 显示全部楼层
0x03 IWDG寄存器配置
6801564c6123d919b7.png

使用特权

评论回复
kqh11a|  楼主 | 2023-7-30 15:33 | 显示全部楼层
1. 键寄存器(IWDG_KR)
5964464c6125529cc8.png

5850164c6126272a31.png

使用特权

评论回复
kqh11a|  楼主 | 2023-7-30 15:34 | 显示全部楼层
2. 预分频寄存器(IWDG_PR)

3724364c6127b30533.png

542464c6128689cab.png

使用特权

评论回复
kqh11a|  楼主 | 2023-7-30 15:35 | 显示全部楼层
3. 重装载寄存器(IWDG_RLR)
717464c612985d2e1.png
5966864c612a934088.png

使用特权

评论回复
kqh11a|  楼主 | 2023-7-30 15:35 | 显示全部楼层
IWDG配置分析
独立看门狗工作频率:40khz / 64分频 = 625hz
递减计数器减1的周期:1 / 625hz
独立看门狗的复位时间:625 * (1 / 625hz) = 1s

使用特权

评论回复
kqh11a|  楼主 | 2023-7-30 15:35 | 显示全部楼层
IWDG配置参考代码

#include "bsp_iwdg.h"

//使能IWDG,在40KHz LSI下,约等于每隔1s产生IWDG复位
void IWDG_Configuration(void)
{
        IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);  //使能或者失能对寄存器 IWDG_PR 和 IWDG_RLR 的写操作
        IWDG_SetPrescaler(IWDG_Prescaler_64);  //设置 IWDG 预分频值
        IWDG_SetReload(625);  //设置 IWDG 重装载值
        IWDG_ReloadCounter();  //按照 IWDG 重装载寄存器的值重装载 IWDG 计数器,喂狗
        IWDG_Enable();  //使能 IWDG
}

//喂狗,防止CPU复位
void IWDG_FeedDog(void)
{
        IWDG_ReloadCounter();
}

使用特权

评论回复
eefas| | 2023-8-4 13:23 | 显示全部楼层
STM32的独立开门狗怎么启用和停止

使用特权

评论回复
sdCAD| | 2023-8-4 14:07 | 显示全部楼层
独立看门狗的作用是在程序运行过程中,定时中断程序,以防止程序死循环或者出现其他问题。

使用特权

评论回复
tabmone| | 2023-8-4 15:38 | 显示全部楼层
可以通过检查重启原因标志位(如RCC_FLAG_IWDGRST)来判断是否由于IWDG超时而重启。

使用特权

评论回复
lihuami| | 2023-8-4 16:31 | 显示全部楼层
设计中,应考虑IWDG的触发时间与正常程序执行时间的关系,确保系统能够在IWDG超时之前完成必要的任务。

使用特权

评论回复
xiaoyaodz| | 2023-8-4 17:07 | 显示全部楼层
使用IWDG库函数来初始化IWDG模块。需要设定一个预分频值和重装载值。

使用特权

评论回复
pentruman| | 2023-8-4 20:31 | 显示全部楼层
STM32的独立看门狗(IWDG)是一种独立的定时器,由专门的低速总线进行驱动,可以在主时钟故障的情况下仍然可以工作。

使用特权

评论回复
robertesth| | 2023-8-4 20:42 | 显示全部楼层
要确保IWDG时钟源已配置。可以使用RCC(Reset and Clock Control)库函数来配置IWDG时钟源,一般选择LSI(Low-Speed Internal)时钟源。

使用特权

评论回复
claretttt| | 2023-8-4 21:04 | 显示全部楼层
看门狗为什么要进行8分频              

使用特权

评论回复
dspmana| | 2023-8-4 22:25 | 显示全部楼层
在程序的主循环中或关键任务的适当位置,使用IWDG库函数定期喂狗。

使用特权

评论回复
saservice| | 2023-8-5 13:00 | 显示全部楼层
独立看门狗时间计算需要注意什么              

使用特权

评论回复
febgxu| | 2023-8-5 14:37 | 显示全部楼层
IWDG的预分频和重装载值的设置取决于应用需求和系统稳定性要求,过小的数值会导致IWDG频繁触发复位,而过大的数值则可能无法及时检测到系统异常。

使用特权

评论回复
adolphcocker| | 2023-8-5 14:45 | 显示全部楼层
看门狗是一种辅助性的工具,不能完全依赖它来保证系统的稳定性和可靠性。

使用特权

评论回复
yeates333| | 2023-8-5 14:52 | 显示全部楼层
在STM32单片机中,可以使用独立看门狗来保证程序的正常运行。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

499

帖子

0

粉丝