0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

看门狗定时中断功能的运行情况分析

h1654155282.3538 来源:老马识途单片机 作者:老马识途单片机 2021-05-01 16:08 次阅读

1、看门狗时钟

讲解下看门狗的定时中断功能。既然提到了定时功能,那就需要先介绍下看门狗的时钟系统。

看门狗定时器模块使用两个时钟:PCLK和WDCLK。PCLK由系统时钟生成,供APB 访问看门狗寄存器使用。WDCLK由看门狗时钟振荡器中的wdt_clk生成,供看门狗定时器计数使用。wdt_clk时钟可以从IRC和看门狗振荡器中选择一个作为时钟源。

这两个时钟源之间存在一些同步逻辑。当MOD和TC寄存器通过APB操作更新时,新的值将由WDCLK时钟设定并生效。当看门狗定时器处于WDCLK时钟周期时,同步逻辑会先锁定WDCLK上计数器的值,然后使其与PCLK同步,以作为TV寄存器的值供 CPU 读取。

2、看门狗中断

首先介绍下看门狗警告中断比较值寄存器(WDWARNINT寄存器),它决定产生看门狗警告中断的看门狗定时器值。当计数器的低10位与WARNINT的10位具有相同值,且计数器其余高位均为0时,便触发看门狗警告中断。如例图所示,设置看门狗中断比较值寄存器的定时值位0x3FF,当看门狗计数器到03FF时,看门狗中断触发。

o4YBAGB5RkSADT-pAACp82p43B4151.png

图1 看门狗中断

除了看门狗警告中断之外,还有看门狗超时中断。这个是通过看门狗模式寄存器的WDRESET位置1,来选择看门狗超时引发中断。模式寄存器的WDTOF位就是看门狗超时标志位。在看门狗超时、发生喂狗错误或当 WDPROTECT=1 且尝试向 WDTC 寄存器写入时,便会设置看门狗超时标志。通过软件向此位写入 0 可将该标志清零。 WDTOF 位置 1,都可以触发中断。在任何情况下,非看门狗超时引起的看门狗超时标志置位都不会触发系统复位。

3、看门狗中断例程

接下来写个小例程来测试下看门狗定时中断功能的运行情况,程序源码如下。

int main(void)

{

//初始化串口

PA_2_INIT(PA_2_TX0);

UART_Open(UART0,9600,UART_NO_PARITY,0);

UART_PutString(UART0,“System Reset.。。”);//Send System Inital String

WDT_Init ();//看门狗初始化

WDT_SetIntervalinMiliSec(4000);//设置看门狗超时时间4秒

WDT-》WARNINT_b.WARNINT = 0x3FF;//警告中断定时值设置为最大值,方便演示

NVIC_EnableIRQ(WDT_IRQn);//设置看门狗NVIC中断

WDT_Enable_Timer;//启动看门狗

WDT_Feed();//喂狗

while(1);

}

void WDT_IRQHandler(void)//看门狗中断服务子程序

{

if(WDT-》MOD_b.WDINT == 1)//警告中断

{

WDT_Feed();

UART_PutString(UART0,“WDT Warning Int.。。”);

UART_ByteWrite(UART0,‘\n’);

}

if(WDT-》MOD_b.WDTOF == 1)//超时中断

{

WDT_Feed();

UART_PutString(UART0,“WDT Timeout Int.。。”);

UART_ByteWrite(UART0,‘\n}

WDT_ClearIntFlag();//清除看门狗中断

return;

}

例程首先对串口进行初始化,然后串口输出提示系统复位。随后就是看门狗的初始化。将看门时间设置为4秒钟,并且为中断模式。并且使能看门狗中断。在看门狗中断服务程序中,根据触发的中断不同,输出相应的提示信息

程序编译无误后,便可以下载仿真调试了。首先全速运行,看下串口输出的信息。根据输出的信息我们发现只有看门狗警告中断信息输出,并没有超时中断信息。这是因为在警告中断发生后及时进行了喂狗操作。所以看门狗并不会超时。

pIYBAGB5RkyAfiD_AABOlQ0FzjI048.png

图2 看门狗中断实例1

接下来我们可以把看门狗警告中断的喂狗函数WDT_Feed()屏蔽掉,然后再下载仿真看看效果。这时候我们就会看到看门狗超时中断的信息输出。因为警告中断后没有及时喂狗操作,导致看门狗超时发生。

pIYBAGB5RlKAQ4RoAABeOt6_SXM488.png

图3 看门狗中断实例2
责任编辑人:CC

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 看门狗
    +关注

    关注

    10

    文章

    541

    浏览量

    70257
  • 定时中断
    +关注

    关注

    0

    文章

    19

    浏览量

    8492
收藏 人收藏

    评论

    相关推荐

    什么是看门狗?

    一定的的裕量。而T1的中断正常与否我们再由T0定时中断子程序来监视。这样就够成了一个循环,T0监视T1,T1监视主程序,主程序又来监视T0,从而保证系统的稳定运行。   51 系列有专门的看门
    发表于 06-16 15:08

    菜鸟晋级篇!一篇文章读懂看门狗定时器!

    资源浪费。程序正常运行时,软件每隔一定的时间(小于定时器的溢出周期)给定时器置数,即可预防溢出中断而引起的误复位。系统软件"看门狗"的设计思
    发表于 03-17 14:47

    看完这篇文章包你明白“看门狗定时器!

    再由T0定时中断子程序来监视。这样就够成了一个循环,T0监视T1,T1监视主程序,主程序又来监视T0,从而保证系统的稳定运行。51 系列有专门的看门狗定时器,对系统频率进行分频计数,
    发表于 03-17 14:59

    看门狗watchdog的理解

    。。。这一等可就是天荒地老啊。针对单片机的看门狗系统软件"看门狗"的设计思路:1.看门狗定时器T0的设置。在初始化程序块中设置T0的工作方式,并开启
    发表于 12-15 09:38

    如何去使用看门狗?喂看门狗与不喂看门狗的区别是什么?

    如何去使用看门狗?喂看门狗与不喂看门狗的区别是什么?清指令为什么不能放在定时中断里?
    发表于 07-08 06:10

    看门狗定时器是什么

    简介  看门狗定时器是单片机的一个组成部分,在单片机程序的调试和运行中都有着重要的意义。看门狗定时器(WDT,Watch Dog Timer
    发表于 07-13 06:34

    看门狗是什么 看门狗功能

    监测的考虑,便产生了一种专门用于监测单片机程序运行状态的模块或者芯片,俗称“看门狗”(watchdog) 。看门狗功能①、在启动正常运行
    发表于 07-30 08:07

    看门狗功能是什么

    看门狗简介看门狗功能是定期的查看芯片内部的情况,一旦发生错误就向芯片发出重启信号。因此要不断进行喂狗,防止系统复位。STM32看门狗STM
    发表于 08-02 08:07

    看门狗的原理 看门狗的作用

    独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效。看门狗的原理:单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路就是为了避免这种情况
    发表于 08-02 08:56

    如何对看门狗中断响应时间进行分析

    什么是看门狗看门狗有哪些相关参数?怎么去设计一种看门狗电路?如何对看门狗中断响应时间进行分析
    发表于 08-06 06:39

    关闭看门狗定时中断的步骤有哪些

    看门狗的作用是什么?看门狗的工作方式有哪些?关闭看门狗定时中断的步骤有哪些?
    发表于 11-09 06:07

    看门狗定时器WDT是什么

    看门狗定时器WDT,是微控制器运行状态的监控系统,在微控制器内部程序跑飞后,微控制器的控制功能将进入混乱状态,这个时候看门狗将复位微控制器,
    发表于 02-15 07:07

    看门狗定时器模块的特点包括哪些呢

    模块可配置为间隔定时器,并可在选定的时间间隔内生成中断看门狗定时器模块的特点包括:八个软件可选时间间隔看门狗模式间隔
    发表于 02-15 07:35

    MCU独立看门狗与窗口看门狗的区别

    的。  独立看门狗是用的内部大约40KHz的RC振荡器,窗口看门狗是用的系统时钟APB1ENR  独立看门狗没有中断功能,只要在计数器减到0
    发表于 03-17 16:30

    STM32F2独立看门狗和窗口看门狗

    结合安全度、计时精确度和易用性·监测软件跑飞,或未按预想地运行情况 ·触发系统复位或产生中断(中断仅针对窗口看门狗)独立
    发表于 09-13 07:15