第九章 独立看门狗实验
9.1 实验目的STM32的内部自带2个看门狗:独立看门狗和窗口看门狗,本章我们学习独立看门狗的使用。
9.2 实验简介看门狗的作用:是在微控制器进入错误状态后的一定时间内复位。当看门狗使能时,如果用户程序没有在溢出周期内喂狗(给看门狗定时器重装定时值),看门狗会产生一个系统复位,这样在程序运行时开启看门狗,对程序进行监视,可防止程序跑飞而死机。
STM32 的独立看门狗由内部专门的32Khz低速时钟驱动,即使主时钟发生故障,它也仍然有效。这里需要注意独立看门狗的时钟是一个内部RC时钟,所以并不是准确的32Khz,而是在15~47Khz之间的一个可变化的时钟,只是我们在估算的时候,以32Khz的频率来计算,看门狗对时间的要求不是很精确,所以,时钟有些偏差,都是可以接受的。
在键值寄存器(IWDG_KR)中写入0xCCCC,开始启用独立看门狗;此时计数器开始从其复位值0xFFF递减计数。当计数器计数到末尾0x000时,会产生一个复位信号(IWDG_RESET)。
无论何时,只要键寄存器 IWDG_KR 中被写入0xAAAA,IWDG_RLR中的值就会被重新加载到计数器中从而避免产生看门狗复位。
IWDG_PR 和IWDG_RLR寄存器具有写保护功能。要修改这两个寄存器的值,必须先向IWDG_KR寄存器中写入0x5555。 将其他值写入这个寄存器将会打乱操作顺序,寄存器将重新被保护。重装载操作(即写入0xAAAA)也会启动写保护功能。
注意 IWDG在一旦启用,就不能再被关闭!想要关闭,只能重启,并且重启之后不能打开IWDG,否则还是不能关闭。
9.3 电路设计这里我们利用前面章节的按键盒LED电路,来验证看门狗的监视复位功能。
9.4 软件设计打开光盘目录下的3、程序源码->1、基础实验->下的实验6 独立看门狗实验工程,打开左侧目录树BSP下的iwdg.c文件,此为独立看门狗的驱动程序文件,工程目录如下图所示:
图9.4.1
打开iwdg.c文件,代码如下:
打开main.c文件,代码如下:
9.5 下载验证用MINI USB线通过CN3的USB口连接电脑和开发板,拨动电源开关给开发板上电,D3电源指示灯点亮,连接好JLINK/ST-LINK下载调试器,打开“实验6 独立看门狗实验”工程代码,编译下载,D4、D5指示灯常亮一下,然后快闪烁一下,如果没按下KEY1按键,看门狗复位,重复前面的过程;如果按下KEY1按键不松开,D4 和D5指示灯快闪烁,看门狗不会复位。