STM32F407系列IWDG独立看门狗
2026/6/18 16:25:34 网站建设 项目流程

1.IWDG简介

IWDG全程Independt Watchdog,即独立看门狗。其本质是能产生系统复位信号的计数器,它的时钟由独立的RC振荡器提供(可在待机和停止模式下运行,独立看门狗被激活以后,当计数器递减到0X0000的时产生复位。)在计数器计时到0之前,通过喂狗,重装载计数器的值,防止复位。F407的lsi时钟频率通过查阅手册为32kHz,如下。


2.IWDG的作用

1.异常:外界电磁干扰或者自身系统(硬件或软件)异常造成程序跑飞,如:陷入某个不正常的死循环,打断正常的程序运行

2.作用:主要用于检测外界电磁干扰,或程序跑飞问题

3.应用:在一些需要高稳定性的产品中,并且对精度要求较低的场合。

ps:独立看门狗是异常处理的最后手段,不可依赖,应尽量避免异常的发生!

2.1 溢出时间计算

T = 预分频系数 * 看门狗重装载值 / 时钟源频率

2.2 独立看门狗配置过程

1.取消PR(预分频)/RLR(重装载)寄存器保护

2.设置预分频和重装载寄存器系数,启动IWDG。

void IWDG_Init(void) { hiwdg.Instance = IWDG; hiwdg.Init.Prescaler = IWDG_PRESCALER_32; //设置IWDG分频系数 hiwdg.Init.Reload = 1000 * 3; //3秒喂狗 HAL_IWDG_Init(&hiwdg); //初始化IWDG }

超时时间 = 3000 * 32 / 32000 = 3s。只要3s没有喂狗,即会复位。

main函数

IWDG_HandleTypeDef hiwdg; void main_thread(void* pArg) { IWDG_Init(); uint8_t nCnt = 0; while (1) { HAL_IWDG_Refresh(&hiwdg); Gpio_setPinToggle(&xLed); //生命信号指示灯闪亮 osDelay(500); } }

验证:注释掉喂狗函数,程序3s即复位一次。


需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询