### STM32-IWDG(独立看门狗) #### IWDG1,IWDG简介 独立看门狗(IWDG)是STM32微控制器内置的一种硬件资源,主要功能是在系统出现异常的情况下(例如进入非法循环或受到外部电磁干扰),通过产生系统复位信号来重启整个系统,从而确保系统的稳定运行。对于需要长时间稳定运行的应用场景,如工业控制、汽车电子等领域尤为重要。 #### IWDG工作原理 IWDG的工作基于一个递减计数器,该计数器由独立的RC振荡器提供时钟源。独立RC振荡器的一个显著特点是即使在待机和停止模式下也能继续运行,这保证了即使在系统进入低功耗状态时,IWDG也能正常运作。一旦激活IWDG,如果递减计数器计数到0x000(即计数器完全清零),则会产生一个系统复位信号,强制重启系统。 #### IWDG配置步骤 1. **取消PR/RLR寄存器写保护**:首先需要解除预分频器寄存器 (IWDG_PR) 和重装载寄存器 (IWDG_RLR) 的写访问保护。可以通过向键寄存器 (IWDG_KR) 写入特定的值(0x5555)来实现这一操作。 2. **设置IWDG预分频系数**:预分频器寄存器 (IWDG_PR) 用于设置IWDG的时钟预分频系数,其取值范围为0~7,不同的值对应不同的预分频比例。 3. **设置重装载值**:重装载寄存器 (IWDG_RLR) 用于设置计数器的初始值,即当计数器递减至0时会自动重新加载此值,从而避免系统复位。该寄存器的有效位为低12位,因此最大值为4096。 4. **启动IWDG**:通过向键寄存器 (IWDG_KR) 写入另一个特定的值(0xCCCC)来启动IWDG。 5. **等待寄存器更新**:在设置完预分频系数和重装载值后,需要等待状态寄存器 (IWDG_SR) 中的相关标志位变为0,以确认寄存器值已成功更新。 6. **刷新计数器**:为了维持计数器的运行,必须定期向键寄存器 (IWDG_KR) 写入0xAAAA来刷新计数器的值,通常称为“喂狗”。 #### IWDG溢出时间计算 IWDG的溢出时间可以通过以下公式计算: - **HAL库计算方法**: \[ \text{溢出时间} = (1 + \text{预分频值}) \times (\text{重装载值} + 1) \times 1 \text{ms} \] 其中,预分频值取决于预分频器寄存器 (IWDG_PR) 的设置,重装载值则是重装载寄存器 (IWDG_RLR) 的值。 - **寄存器计算方法**: \[ \text{溢出时间} = (1 + \text{预分频值}) \times (\text{重装载值} + 1) \times \frac{1}{\text{LSI时钟频率}} \] LSI时钟频率通常是固定的,对于STM32F1系列为40kHz,对于STM32F4/F7/H7系列为32kHz。 #### IWDG编程实战 为了验证IWDG的功能,可以通过编写一段代码来模拟系统异常情况下的行为,具体步骤如下: 1. **初始化IWDG**:按照前面提到的配置步骤进行初始化。 2. **定时喂狗**:在主循环中定时调用 `HAL_IWDG_Refresh()` 函数来刷新计数器。 3. **观察系统行为**:如果在规定的时间内没有调用 `HAL_IWDG_Refresh()` 函数,则IWDG的计数器会递减至0并触发系统复位。 #### IWDG的应用场景 - **异常处理**:在系统遇到无法通过软件手段解决的异常时,作为最后的保障措施。 - **提高稳定性**:在需要长时间稳定运行的应用中,如工业自动化设备、医疗设备等。 - **降低功耗**:由于独立RC振荡器可以在低功耗模式下继续运行,使得即使在系统进入休眠状态时也能保持监控功能。 #### IWDG的注意事项 - 启用IWDG后,LSI时钟会自动开启。 - LSI时钟的频率并不十分精确,但在实际计算中可以采用一个大致的值(如40kHz或32kHz)。 - IWDG作为异常处理的最后手段,应尽量避免系统发生异常,通过良好的设计来预防。 STM32的IWDG是一种重要的安全机制,能够帮助开发人员确保嵌入式系统的长期稳定性和可靠性。通过对IWDG的工作原理、配置步骤以及实际应用场景的理解,开发者可以更好地利用这项功能来优化自己的产品设计。























- 粉丝: 479
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- vcos_components_configs-智能车资源
- 中职计算机教学中存在的问题及对策探思.docx
- 数字图像处理实验指导说明书zqd.doc
- lanqiao-蓝桥杯资源
- 汇编语言-汇编语言资源
- 通信工程中多网融合技术的探析.docx
- 基于华为云计算技术的多课程教学平台的构建.docx
- cotParam-C语言资源
- klogging-C++资源
- VC数据挖掘在客户关系管理中的实际应用.doc
- (源码)基于Pytorch的CenterNet目标检测模型实现.zip
- 完成Java面向对象程序设计方案实验课的心得体会.doc
- 中职计算机蓝领人才培养的思考与探索.docx
- 海外工程项目管理面临的挑战与对策.docx
- 基于智慧城市的快递寄件系统研究.docx
- 人工智能改善生活.docx


