IWDG
一、IWDG 简介#
- IWDG的全称:Independent watchdog,即独立看门狗
- IWDG的本质:能产生系统复位信号的计数器
- IWDG的特性:
- 递减的计数器
- 时钟由独立的RC振荡器提供(可在待机和停止模式下运行)
- 看门狗被激活后,当递减计数器计数到0x000时产生复位
- 喂狗:在计数器计数到0之前,重装载计数器的值,防止复位
IWDG有什么作用?#
- 异常:外界电磁干扰或者自身系统(硬件或软件)异常,造成程序跑飞,如:陷入某个不正常的死循环,打断正常的程序运行
- 作用:主要用于检测外界电磁干扰,或硬件异常导致的程序跑飞问题
- 应用:在一些需要高稳定性的产品中,并且对时间精度要求较低的场合
独立看门狗是异常处理的最后手段,不可依赖,应在设计时尽量避免异常的发生!
二、IWDG 工作原理#
三、IWDG 框图#
四、IWDG 寄存器#
1、键寄存器(IWDG_KR)#
2、预分频器寄存器 (IWDG_PR)#
3、重装载寄存器(IWDG_RLR)#
4、状态寄存器(IWDG_SR)#
5、寄存器配置操作步骤#
- 通过在键寄存器 (IWDG_KR) 中写入 0xCCCC 来使能 IWDG。
- 通过在键寄存器 (IWDG_KR) 中写入 0x5555 来使能寄存器访问。
- 通过将预分频器寄存器 (IWDG_PR) 编程为 0~7 中的数值来配置预分频器。
- 对重载寄存器 (IWDG_RLR) 进行写操作。
- 等待寄存器更新 (IWDG_SR = 0x0000 0000)。
- 刷新计数器值为 IWDG_RLR 的值 (IWDG_KR = 0xAAAA)。
五、IWDG 溢出时间计算#
1、IWDG最短最长超时时间(F1)#
2、IWDG最短最长超时时间(F4/F7/H7)#
六、IWDG 配置步骤#
步骤 | 函数 |
---|---|
取消 PR/RLR 寄存器写保护 设置 IWDG 预分频系数和重装载值 启动 IWDG |
HAL_IWDG_Init() |
及时喂狗,即写入 0xAAAA 到 IWDG_KR | HAL_IWDG_Refresh() |
1、HAL库相关函数介绍#
标签:
ST32
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程