独立看门狗 IWDG

一,独立看门狗

二,独立看门狗的时钟源

独立看门狗拥有自己的时钟源,不依赖PLL时钟输出的分频信号,能够独立运行,这样子的好处就是PLL假如受到干扰,

导致运行异常,独立的看门狗还能正常地进行工作,如果没有正常的喂狗动作,就复位CPU。

三、程序设计

1.     添加复位检测代码,有助于观察当前工作的可靠性

   /* Check if the system has resumed from IWDG reset,检查当前复位是否有独立看门狗导致 */
         if (RCC_GetFlagStatus(RCC_FLAG_IWDGRST) != RESET)
         {
                   /* IWDGRST flag set */
                   printf("iwdt reset cpu\r\n");

                   /* Clear reset flags */
                   RCC_ClearFlag();
         }
         else
         {
                   /* IWDGRST flag is not set */
                   printf("normal reset cpu\r\n");

         }

2.

/* Enable write access to IWDG_PR and IWDG_RLR registers,独立看门狗是受到保护的,现在进行解锁动作 */
         IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);

         /* IWDG counter clock: LSI/256 ,设置看门狗的时钟 = 32KHz / 256 =125Hz */
         IWDG_SetPrescaler(IWDG_Prescaler_256);

         /* 设置看门狗的超时时间,也就是设置它的计数值
         当前看门狗的时钟为125Hz,然后设置超时时间为1秒,那么重载值为125
         当前看门狗的时钟为125Hz,然后设置超时时间为2秒,那么重载值为250
         */
         IWDG_SetReload(125);

         /* Reload IWDG counter,重载独立看门狗的计数值,说白了就是喂狗 */
         IWDG_ReloadCounter();

         /* Enable IWDG (the LSI oscillator will be enabled by hardware),使能独立看门狗 */
         IWDG_Enable();

3.     喂狗技巧

1.在裸机代码实现喂狗,放在定时器里面,因为定时器与看门狗是使用不同的时钟源,允许这么做!

2.     如果有实时的操作系统的加持,可以在任务里面添加喂狗动作,如果操作系统崩溃了,能够检测到软件的错误,触发CPU的复位。

在定时器中断服务函数当中,添加喂狗动作!

---恢复内容结束---

原文地址:https://www.cnblogs.com/xiangtingshen/p/10963552.html

时间: 2024-07-28 21:54:56

独立看门狗 IWDG的相关文章

STM32之独立看门狗(IWDG)与窗口看门狗(WWDG)总结

一.独立看门狗 STM32 的独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效. 看门狗的原理:单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路就是为了避免这种情况的发生.看门狗的作用就是在一定时间内(通过定时计数器实现)没有接收喂狗信号(表示 MCU 已经挂了),便实现处理器的自动复位重启(发送复位信号) . 在键值寄存器(IWDG_KR)中写入 0xCCCC,开始启用独立看门狗:此时计数器开始从其复位值 0xFFF 递减计数.当计数器计

stm32 独立看门狗IWDG

http://note.youdao.com/noteshare?id=7e77f1eab55fd08573e82e550e186ccf&sub=44D0C7BCB7094D4D92D5C71128CFA0F0 文章在有道云里. 原文地址:https://www.cnblogs.com/coversky/p/8452624.html

cortex_m3_stm32嵌入式学习笔记(七):独立看门狗&窗口看门狗

总结一下这两种狗吧... 1)独立看门狗没有中断,窗口看门狗有中断 2)独立看门狗有硬件软件之分,窗口看门狗只能软件控制 3)独立看门狗只有下限,窗口看门狗又下限和上限 4)独立看门狗是12位递减的.窗口看门狗是7位递减的 5)独立看门狗是用的内部的大约40KHZ RC振荡器(不受系统时钟限制,即使系统时钟坏了也能工作),窗口看门狗是用的系统时钟APB1ENR(系统时钟要是挂了就完了) 独立看门狗Iwdg--独立于系统之外,因为有独立时钟,所以不受系统影响的系统故障探测器.主要用于监视硬件错误.

cortex_m3_stm32嵌入式学习笔记(五):独立看门狗实验(IWDG)

单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路就是为了避免这种情况的发生.看门狗的作用就是在一定时间内(通过定时计数器实现)没有接收喂狗信号(表示 MCU 已经挂了),便实现处理器的自动复位重启(发送复位信号) . 感觉是是自动复位功能,就是在一定时间内你应该去喂它而如果程序中途进入了死循环(就是喂不了了)这个MCU就挂了..但如果没开IWDG ,你不知道它挂没挂(虽然个人认为也是可以手动按复位键的嘛..)(上面那段话抄自某论坛) IWDG初始化步骤: 1)取消寄存器写保

STM32之------独立看门狗(IWDG)和窗体看门狗(WWDG)

一     前沿废语: 之前有很风靡的游戏,名字叫<看门狗>.该游戏用了很新的引擎技术,打造出了一个辽阔庞大的世界,内容是玩家Aiden·Pearce(主角)是一名精通黑客技术的高手,当时的世界是处于所有物品都被置了电子设备控制,整个城市都在依赖着他们,主人公决定利用自己的技术为这个世界惩奸除恶.   这个游戏以极高的自由度.出色的游戏质量与丰富的游戏内容被业界公认为开启次世代游戏的大门之作,该游戏被IGN评为年度最佳射击游戏(下载地址:http://down.ali213.net/pcgam

独立看门狗和窗口看门狗

独立看门狗没几个寄存器. 1.IWDG_KR,写入0xcccc,启动看门狗.计数器开始从复位值 0xFFF 递减计数.当计数器计数到终值 (0x000) 时会产生一个复位信号( IWDG 复位)2.任何时候将关键字 0xAAAA 写到 IWWDG_KR 寄存器中, IWDG_RLR 的值就会被重载到计数器,从而避免产生看门狗复位.写入键值 5555h 可使能对 IWDG_PR 和 IWDG_RLR 寄存器的访问.3.这个看门狗的时钟源是LSI,IWDG_PR寄存器是这个看门狗时钟的分频设置. 没

STM32的独立看门狗

STM32 内 部自带了 2 个看门狗:独立看门狗(IWDG)和窗口看门狗(WWDG) STM32 的独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然 有效.这里需要注意独立看门狗的时钟是一个内部 RC 时钟,所以并不是准确的 40Khz,而是 在 30~60Khz 之间的一个可变化的时钟,只是我们在估算的时候,以 40Khz 的频率来计算,看 门狗对时间的要求不是很精确,所以,时钟有些偏差,都是可以接受的. 首先我们得讲解一下看门狗的原理.这个百度百科里面有很详细

【转】STM32 独立看门狗简介

STM32 的独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效. 看门狗的原理:单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路就是为了避免这种情况的发生.看门狗的作用就是在一定时间内(通过定时计数器实现)没有接收喂狗信号(表示 MCU 已经挂了),便实现处理器的自动复位重启(发送复位信号) . 在键值寄存器(IWDG_KR)中写入 0xCCCC,开始启用独立看门狗:此时计数器开始从其复位值 0xFFF 递减计数.当计数器计数到末尾 0x0

STM32F103ZET6独立看门狗

1.IWDG简介 STM32F103ZET6的独立看门狗(IWDG)是由内部LSI(内部约40KHZ低速时钟)时钟驱动的.由于IWDG是由内部低速时钟驱动,所以就算主时钟发生故障,IWDG依然能够工作. 由于LSI是一个内部RC时钟,所以时钟不是很准确的40KHZ,而是在30KHZ~60KHZ之间变化的时钟,所以IWDG时间的计算并不是很准确,只能是一个大概的值.一般用40KHZ来估算. IWDG的计数器是一个递减计数器,当IWDG被激活后,计数器开始向下递减计数,当计数器计数至0x0000时产