7.6.2 看门狗定时器应用:STM32系统运行监测设计
1.任务要求
利用IWDG实现4 s的定时,以监测STM32F1系列MCU正常工作。设置一个LED和按键来监测程序的运行情况,当系统正常工作时,LED间隔1 000 ms闪烁;设按键被按下时表示故障,超时喂狗,产生看门狗复位,LED不闪烁。请完成程序的设计,并在Proteus中完成仿真和调试。
2.硬件设计
硬件电路如图7.23所示,在PB10外接一个按钮模拟故障,接10 kΩ上拉电阻;PB0外接发光二极管,阳极通过100Ω电阻接电源正极。

图7.23 硬件电路
3.软件设计
系统LSI的频率为40 kHz,设置IWDG分频值为64,则有
可得计数值N=2500。由于IWDG是减计数器,所以初值为2 500-1。将以上参数通过STM32CubeMx进行配置,如图7.24所示,并生成MDK工程文件。(https://www.daowen.com)

图7.24 IWDG配置
在生成的MDK工程文件中,无须修改IWDG初始化程序,主要完成对main()函数和中断回调函数的修改,参考程序如下。

4.仿真与调试
在Proteus中绘制仿真电路图,如图7.25所示,正常情况下,IWDG在1 000 ms喂狗一次,因此LED灯间隔1 000 ms闪烁。当按下按键时,HAL_Delay(4100)要延时4 100 ms,超出了IWDG的4 s(4 000 ms)周期,因此计数器计满并产生系统复位。由此可知,在系统中可引入看门狗定时器,增加系统的稳定性。

图7.25 仿真电路图