这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 国产MCU » 独立看门狗还有硬件与软件之分?这么多年才知道

共1条 1/1 1 跳转至

独立看门狗还有硬件与软件之分?这么多年才知道

院士
2025-07-18 14:24:25     打赏

在逛论坛的时候,看到有人讨论看门狗的启动,点开帖子一阅。一直以为挺普通的独立看门狗(IWDG)突然变得不普通,彰显了其英雄本色。

独立看门狗的功能特性非常简单与专一。打开后,必须喂狗。未按时喂狗则会引发系统复位,很简单,很实用。用法也非常简单:计算一下while(1)中各项工作的时长,将看门狗的周期设置略大于此时长。这样就能保证在各项工作完成之后,可以喂狗成功。当意外情况发生后,看门狗也能及时响应系统的异常,实现系统复位操作。

我们以极海APM32E030为例,官方的SDK已经有现成的示例参考程序可以使用。这里简单附上代码,方便大家阅读(代码中的中文部分为我添加内容)

void IWDTInit()
{
    /* clear IWDTRST Flag*/
    if (RCM_ReadStatusFlag(RCM_FLAG_IWDTRST) != RESET)
    {
        RCM_ClearStatusFlag();
    }
    /* set IWDT Write Access */
    IWDT_EnableWriteAccess();
    /* set IWDT Divider 调整喂狗周期时长 */
    IWDT_ConfigDivider(IWDT_DIV_64);
    /* set IWDT Reloader 只有12位有效 */
    IWDT_ConfigReload(40000 / 32);
    /* Refresh */
    IWDT_Refresh();
    /* Enable IWDT */
    IWDT_Enable();
}
void IWDT_Feed(void)
{
    IWDT_Refresh();
}

其实以上并不是本次帖子的主要目的,主要目的是独立看门狗的配置里是分两个部分:一部分是我们现在讲到的最常见的部分,启动和周期性喂狗。而另一部分则是硬件看门狗部分,是由MCU的选项字控制的。在Flash控制器的选项字节功能描述章节,即UOB字体的bit位0: WDTSEL,来标识当前启动的硬件看门狗,还是软件看门狗。

到这里引入了“硬件看门狗”的概念,这就与看门狗章节中的“硬件看门狗”的提示内容相匹配了。如果Flash选项字配置使能了硬件看门狗(UOB.bit0=0)则在配置过程的参数全部作用于硬件看门狗。

硬件看门狗与默认的软件看门狗不同之处还在于其上电即工作,并不受IWDG模块的IWDT_KEY控制,无需写入0xCCCC启动看门狗,而且复位并不会关闭!复位并不会关闭!复位并不会关闭!

综上,如果在flash选项字配置成“硬件看门狗”则MCU的表现更像是一个外置的看门狗芯片的行为。MCU的任何行为均无法影响到看门狗。大家根据自己的实际项目需要来选择看门狗的具体行为。




关键词: 看门狗     硬件     软件    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]