打印
[其他]

[分享] MM32独立看门狗(IWDG)

[复制链接]
2909|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

一、IWDG简介


MM32 MCU内置两个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看门设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。


独立看门狗(IWDG)由专门的低速时钟LSI)驱动,即使主时钟发生故障它也仍然有效。窗口看门狗从APB1时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。


IWDG最适合应用于那些需要看门狗作为一个正在主程序外,能够完全独立工作,并且对时间精度要求低的场合。WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。


二、IWDG主要性能


Ø  自由运行的递减计数


Ø  时钟由独立的振荡器提供(可在停止和待机模式下工作)


Ø  看门狗被激活后,则在计数器计数至 0x0000 时产生复位。




使用特权

评论回复
沙发
海滨消消|  楼主 | 2021-7-9 11:25 | 只看该作者

三、IWDG 功能描述


下图为独立看门狗模块的功能框图。


在键寄存器(IWDG_KR)中写入 0xCCCC。开始启动独立看门狗;此时计数器开始从其复位值 0xFFF递减计数。当计数器计数到末尾 0x000 时,会产生一个复位信号(IWGD_RESET)。


无论何时,只要在键寄存器IWDG_KR 中写入 0xAAAA IWDG_RLR 中的值就会被重新加载到计数器,从而避免产生看门狗复位。


                                独立看门狗框图




                      看门狗超时时间(40KHz的输入时钟(LSI))




此外,即使振荡器的频率是精确的,确切的时序仍然依赖于 APB 接口时钟与振荡器时钟之间的相位差,因此总会有一个完整的振荡器周期是不确定的。


IWDG_PR IWDG_RLR 寄存器具有写保护功能。要修改这两个寄存器的值,必须先向 IWDG_KR 寄存器中写入 0x5555。以不同的值写入这个寄存器将会打乱操作顺序,寄存器将重新被保护。重装载操作(即写入 0xAAAA)也会启动写保护功能。


状态寄存器指示预分频值和递减计数器是否正在被更新。


当微控制器进入调试模式时(CPU核心停止),根据调试模块中的DBG_IWDG_STOP 配置位的状态,IWDG 的计数器能够继续工作或停止。








使用特权

评论回复
板凳
海滨消消|  楼主 | 2021-7-9 11:26 | 只看该作者

四、独立看门狗代码配置


MM32L073系列独立看门狗初始化和启动设置:








喂狗函数:





五、实验实现窗口看门狗


测试方法:在main函数中先进行串口打印后初始和打开IWDG,然后让程序进入while1)的死循环。


测试代码main函数如下:




测试结果:


1、当我们在while(1)里进行喂狗操作时,串口只会进行一次打印。。


2、当我们在while(1)里不进行喂狗操作时,串口每隔大约看门狗复位的时间1.6s进行一次打印。


实验总结:实现了看门狗复位的功能。












使用特权

评论回复
地板
fuqinyyy| | 2021-7-10 16:16 | 只看该作者
大部分高可靠性应用环境下还是用的外部看门狗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

214

主题

1515

帖子

1

粉丝