独立看门狗基础与应用

一.IWDG简介

        1.1什么是独立看门狗。

                相当于一个监控程序是否跑飞,或者死机,在正常情况下程序会定时喂狗,如果超过一定的时间没有喂狗,会触发复位。独立看门狗 (IWDG) 由其专用低速时钟 (LSI) 驱动,因此即便在主时钟发生故障时仍然保持工作状态。窗口看门狗 (WWDG) 时钟由 APB1 时钟经预分频后提供,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。

        1.2IWDG特性

                1.自由运行递减计数器

                2.时钟由独立 RC 振荡器提供(可在待机和停止模式下运行)

                3.当递减计数器值达到 0x000 时产生复位(如果看门狗已激活)

         1.3IWDG功能说明

                像关键寄存器(IWDG_KR)写入0XCCCC启动独立看门狗时,计数器开始从复位值 0xFFF 递减计数。当计数器计数到终值 (0x000) 时会产生一个复位信号(IWDG 复位)。任何时候将关键字 0xAAAA 写到 IWWDG_KR 寄存器中,IWDG_RLR 的值就会被重载到计数器,从而避免产生看门狗复位。

          1.4寄存器的访问和保护

                IWDG_PR 和 IWDG_RLR 寄存器具有写访问保护。若要修改寄存器,必须首先对 IWDG_KR 寄存器写入代码 0x5555。而写入其他值则会破坏该序列,从而使寄存器访问保护再次生效。这意味着重装载操作(即写入 0xAAAA)也会启动写保护功能。状态寄存器指示预分频值和递减计数器是否正在被更新。

           1.5IWDG在32kHz超时周期的最大最小值如下图

二.IWDG寄存器

        2.1关键寄存器(IWDG_KR)偏移地址:0x00

                位31:16 保留,必须保持复位值。

                位15:0 :键值 (Key value)(只写位,读为 0000h)必须每隔一段时间便通过软件对这些位写入键值 AAAAh,否则当计数器计数到 0 时,看门狗 会产生复位。 写入键值 5555h 可使能对 IWDG_PR 和 IWDG_RLR 寄存器的访问( 写入键值 CCCCh 可启动看门狗(选中硬件看门狗选项的情况除外)。

        2.2预分频器寄存器 (IWDG_PR)偏移地址:0x04

                位 31:3 保留,必须保持复位值。

                 2:0 PR[2:0]预分频器 (Prescaler divider)  这些位受写访问保护,请参见 18.3.2 。通过软件设置这些位来选择计数器时钟的预分频 因子。若要更改预分频器的分频系数,IWDG_SR PVU 位必须为 0

                000:4 分频
                001:8 分频
                010:16 分频
                011:32 分频
                100:64 分频
                101:128 分频
                110:256 分频
                111:256 分频
注意:读取该寄存器会返回 VDD 电压域的预分频器值。如果正在对该寄存器执行写操作,则 读取的值可能不是最新的 / 有效的。因此,只有在 IWDG_SR 寄存器中的 PVU 位为 0 时,从寄存器读取的值才有效

        2.3重载寄存器 (IWDG_RLR)偏移地址:0x08

                位 31:12 保留,必须保持复位值。

                位 11:0 RL[11:0] 看门狗计数器重载值 (Watchdog counter reload value)
这些位受写访问保护, 每次对 IWDR_KR 寄存器写 入值 AAAAh 时,这个值就会重装载到看门狗计数器中。之后,看门狗计数器便从该装载的值开始递减计数。超时周期由该值和时钟预分频器共同决定。若要更改重载值,IWDG_SR 中的 RVU 位必须为 0
注意:读取该寄存器会返回 VDD 电压域的重载值。如果正在对该寄存器执行写操作,则读取
的值可能不是最新的 / 有效的。因此,只有在 IWDG_SR 寄存器中的 RVU 位为 0 时,从
寄存器读取的值才有效。

        2.4状态寄存器 (IWDG_SR)偏移地址:0x0C

                位 31:2 保留,必须保持复位值。

                位 1 RVU 看门狗计数器重载值更新 (Watchdog counter reload value update) 可通过硬件将该位置 1 以指示重载值正在更新。当在 V DD 电压域下完成重载值更新操作后 (需要多达 5 RC 40 kHz 周期),会通过硬件将该位复位。重载值只有在 RVU 位为 0 时才可更新。
                位 0 PVU 看门狗预分频器值更新 (Watchdog prescaler value update) 可通过硬件将该位置 1 以指示预分频器值正在更新。当在 V DD 电压域下完成预分频器值更新操作后(需要多达 5 RC 40 kHz 周期),会通过硬件将该位复位。预分频器值只有在 PVU 位为 0 时才可更新。

三.IWDG寄存器初始化流程

 

 四.IWDGHAL库版本

 

    就分享到这吧,后面会更新STM32和Linux的一些驱动学习,感兴趣的宝子可以关注我哦!

               

          

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值