IWDG与WWDG异同

STM32有两个看门狗:独立看门狗IWDG与窗口看门狗WWDG。下面来讲讲他们的异同。

1、时钟源

IWDG的时钟源来自低速时钟LSI,LSI是由内部的RC振荡产生,频率在40kHz左右,时钟不准确。

WWDG的时钟源来自PCLK1(或者说是APB1),经过PLCK1的4096分频后得到频率为36M/4096 Hz的频率。

 

2、计数器

IWDG有一个12位的减计数器,计数值范围为:0~4095。

WWDG有一个7为的键计数器,计数值范围为:0~127。

 

3、复位的条件

IWDG复位条件很简单,只要看门狗激活后,计数值减到0x000时,就产生复位。

WWDG的复位条件有两种:(1)当减计数器的值小于0x40,则产生复位;(2)当减计数器在窗口外被重新装载,则产生复位。

 

4、使用场合

IWDG最适合应用于那些需要看门狗作为一个主程序之外,能够独立工作,并且对时间精度要求比较低的 场合。

WWDG最适合那些要求看门狗在精确计时敞口器作用的应用程序。

<think>嗯,用户想了解STM32H743微控制器中独立看门狗(IWDG)的配置和使用方法。首先,我需要回忆一下IWDG的基本概念和它在STM32中的作用。独立看门狗主要用于检测和解决由软件错误导致的系统故障,通过定期喂狗来防止系统复位。如果程序不能按时喂狗,IWDG会触发系统复位,确保系统从错误中恢复。 接下来,我得考虑STM32H743的IWDG其他系列型号的异同。通常,STM32IWDG配置步骤包括启用IWDG时钟、设置预分频器和重装载值、启动看门狗,然后定期喂狗。但需要确认H743是否有特殊的配置要求,比如寄存器地址或特定的步骤。 用户可能需要具体的代码示例,所以需要参考ST的标准外设库或HAL库的用法。例如,使用HAL库的话,可能涉及HAL_IWDG_Init和HAL_IWDG_Refresh函数。需要确保代码示例正确,并且符合H743的库版本。同时,要注意预分频器和重装载值的计算,以确保看门狗超时时间符合应用需求。 另外,用户可能对配置中的关键参数有疑问,比如如何选择预分频系数和重装载值来设置合适的超时时间。需要解释计算公式,比如超时时间 = (预分频系数 * 重装载值) / LSI频率。这里LSI的频率通常是32kHz,但具体数值可能需要查看数据手册确认。 还需要提醒用户注意事项,比如IWDG一旦启动就无法停止,除非发生复位,以及喂狗操作必须在超时前完成。此外,在调试模式下可能需要配置DBGMCU模块,防止看门狗在断点时触发复位。 可能的相关问题包括如何计算超时时间、在低功耗模式下如何处理IWDG、以及IWDG窗口看门狗(WWDG)的区别。这些问题可以作为后续的扩展内容,帮助用户更全面地理解看门狗的应用场景和限制。 最后,确保回答结构清晰,分步骤说明配置流程,提供代码示例,并引用相关的ST官方资料,比如标准外件库的链接,以增强可靠性和参考性。同时,检查LaTeX格式是否正确,数学表达式用$...$,独立公式用$$...$$,并生成相关问题供用户进一步探索。</think>### STM32H743独立看门狗(IWDG)配置使用详解 #### 一、IWDG基本原理 独立看门狗(IWDG)是一种硬件计时器,用于在软件故障时触发系统复位。其核心机制是通过递减计数器实现,若计数器值达到0前未"喂狗"(重载计数值),则系统复位。IWDG时钟源为独立的低速内部RC振荡器(LSI,约32kHz),不受主时钟影响[^1]。 #### 二、配置步骤(基于HAL库) 1. **启用IWDG时钟** ```c __HAL_RCC_LSECMD(); // 启动LSI时钟(部分型号需要) __HAL_RCC_IWDG_CLK_ENABLE(); ``` 2. **初始化参数** 超时时间计算公式: $$T_{out} = \frac{4 \times 2^{prescaler} \times reload}{f_{LSI}}$$ 其中$f_{LSI}=32kHz$,$prescaler$为预分频系数(4-256),$reload$为12位重装载值(0-0xFFF) 3. **HAL库初始化示例** ```c IWDG_HandleTypeDef hiwdg; hiwdg.Instance = IWDG; hiwdg.Init.Prescaler = IWDG_PRESCALER_32; // 32分频 hiwdg.Init.Reload = 0x0FFF; // 重装载值 HAL_IWDG_Init(&hiwdg); ``` 4. **喂狗操作** ```c void feed_dog(void) { HAL_IWDG_Refresh(&hiwdg); // 重载计数器 } ``` #### 三、关键配置参数 | 参数 | 可选值 | 说明 | |---------------|---------------------------------|--------------------------| | Prescaler | IWDG_PRESCALER_4~256 | 时钟分频系数 | | Reload | 0x000~0xFFF | 最大计数值(12位) | | Window value | 部分型号支持窗口模式 | 允许喂狗的时间窗口[^2] | #### 四、应用示例 ```c // 系统初始化时配置IWDG void system_init() { // ...其他初始化 MX_IWDG_Init(); // 调用CubeMX生成的初始化函数 } // 主循环中定期喂狗 while(1) { process_data(); if(check_system_health()) { feed_dog(); } } ``` #### 五、注意事项 1. IWDG一旦启动无法通过软件关闭 2. 喂狗间隔应小于超时时间的50%-75% 3. 调试时需配置DBGMCU_CR寄存器暂停IWDG 4. 窗口模式下必须在指定时间窗口内喂狗
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值