灵动微电子 MM32
直播中

zhu

8年用户 1640经验值
擅长:控制/MCU
私信 关注
[分享]

MM32独立看门狗(IWDG)



来源 灵动MM32

一、IWDG简介


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


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


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


二、IWDG主要性能


Ø  自由运行的递减计数器


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


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



三、IWDG 功能描述


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


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


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


                                独立看门狗框图


82.png


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


83.png


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


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


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


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



四、独立看门狗代码配置


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


84.png


85.png


86.png


喂狗函数:


87.png



五、实验实现窗口看门狗


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


测试代码main函数如下:


88.png


测试结果:


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


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


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


更多回帖

发帖
×
20
完善资料,
赚取积分