关闭看门狗

看门狗作用:在嵌入式领域,有些系统需要长期运行在无人看守的环境。在运行过程中,难免不出现系统死机的情况,这时就需要系统自身带有一种自动重启的功能。watchdog一般是一个硬件模块,其作用就是在系统死机时,帮助系统实现重新启动。
看门狗工作方式:watchdog在硬件上实现了计时功能,启动计时后,用户(软件)必须在计时结束前重新开始计时,俗称“喂狗”,如果到了约定的时间还没有重新开始计时,那么它就认为系统死机了,就自动重启系统。
看门狗原理图:

这里写图片描述

uboot以及一般的bootloader都会关闭看门狗,这是因为bootloader较简单,没有复杂的功能,不会出现死机的情况。如果不关闭看门狗,则需要不断“喂狗”,因此为了节省资源,减少不必要的操作都会关闭看门狗。
通过WTCON寄存器可以实现看门狗的关闭或者使用。
以S3C2440芯片为例,WTCON寄存器:

这里写图片描述

由上图可知,WTCON地址为0x53000000,该寄存器最后一位置零就可以关闭看门狗,为了方便,可以将整个寄存器置零
汇编代码:

#define pWTCON 0x53000000
disable_watchdog:
    ldr r0, =pWTCON
    mov r1, #0x0
    str r1, [r0]
<think>好的,用户想查找在STM32中关闭看门狗的方法或代码示例。首先,我需要回忆STM32的看门狗相关知识。STM32通常有独立看门狗(IWDG)和窗口看门狗(WWDG)两种,而用户提到的“关闭”可能涉及这两种情况。不过,根据参考引用中的信息,引用[3]提到在初始化系统控制时调用了DisableDog()函数来禁用看门狗。这可能是一个关键点。 接下来,我需要确认DisableDog()函数的具体实现。由于引用[3]中的代码示例来自STM32F28335,可能属于DSP系列,与常规的STM32系列有所不同,但关闭看门狗的方法可能有相似之处。通常,STM32的独立看门狗一旦启动就无法通过软件关闭,只能通过复位。而窗口看门狗可能在某些型号中可以配置。因此,用户可能需要在初始化阶段禁用看门狗,例如在系统启动前。 根据引用[3]的示例,DisableDog()函数可能直接操作相关寄存器来禁用看门狗。例如,在STM32中,可能需要设置特定的寄存器位来停止看门狗。比如,对于某些型号,向IWDG_KR寄存器写入0x5555来允许访问其他寄存器,然后设置IWDG_PR和IWDG_RLR寄存器,最后写入0xAAAA来刷新看门狗。但若要禁用,可能需要在启动前配置选项字节,或者确保看门狗没有被启动。 另外,用户提供的引用[1]和[4]中的代码可能与定时器和GPIO相关,但关闭看门狗的具体代码可能在系统初始化阶段,如引用[3]所示。需要确认不同型号的STM32是否有不同的方法。例如,在STM32F1系列中,可能需要在初始化时调用特定的函数来停止看门狗。 可能需要指出,独立看门狗一旦启用后无法通过软件关闭,因此必须在代码中避免启用它,或者在启动时立即配置选项字节禁用。而窗口看门狗可能有不同的处理方式。需要提醒用户注意这些差异,并提供针对不同情况的示例代码。 最后,结合用户提供的引用,特别是引用[3]中的DisableDog()函数,可以推断出在系统初始化函数InitSysCtrl()中,首先禁用看门狗。因此,代码示例可能涉及调用这个函数或者直接操作相关寄存器。需要将这一点解释清楚,并提供具体的代码示例,同时指出不同型号的可能差异。</think>在STM32开发中,关闭看门狗主要有两种方式,具体方法取决于使用的看门狗类型和芯片型号: ### 一、独立看门狗(IWDG)关闭方法 独立看门狗一旦启动后**无法通过软件关闭**,只能通过以下方式处理: 1. **避免初始化看门狗** ```c // 不执行IWDG初始化代码即可 // 若已启用,需通过硬件复位或修改选项字节 ``` 2. **选项字节配置(芯片复位前生效)** ```c // 通过ST-Link Utility工具修改选项字节 // 将DBG_IWDG_STOP配置为Enabled(调试时停止计数) ``` ### 二、窗口看门狗(WWDG)关闭方法 窗口看门狗可通过复位后不启用实现关闭: ```c // 系统初始化时不调用WWDG_Enable() void SystemInit(void) { // 默认不启用WWDG } ``` ### 三、参考代码示例 根据引用[3]中STM32F28335的看门狗关闭实现: ```c void DisableDog(void) { EALLOW; // 允许修改受保护寄存器 SysCtrlRegs.WDCR = 0x0068; // 写入关闭密码+禁用位 EDIS; // 禁止修改受保护寄存器 } ``` ### 四、注意事项 1. 独立看门狗时钟由独立RC振荡器提供,不受主时钟影响[^1] 2. 窗口看门狗时钟来源于APB1总线时钟[^2] 3. 部分型号通过`__HAL_DBGMCU_FREEZE_IWDG()`可在调试时冻结看门狗
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值