实验五 IWDG独立看门狗
一、简介:
- 实验目的:了解IWDG并实现其功能
- 硬件资源及引脚分配:串口1 (PA9/PA10连接在板载USB转串口芯片CH340上面);KEY1--PA15;
- 实验现象:配置IWDG溢出时间为4秒左右,若没及时喂狗(在4秒内未按下KEY1),则看门狗复位,并通过串口打印“超时,看门狗复位”;若及时喂狗(在4秒内按下KEY1),系统不复位,并通过串口打印“及时喂狗”。
二、工程搭建:
1.新建工程,选择芯片型号,配置时钟系统,配置KEY1的GPIO,配置USART1,
2.配置IWDG:只需在System Core中单击其中IWDG,在Mode中勾选Activated,最后在下方配置两个参数即可。
独立看门狗(Independent Watchdog, IWDG)是用于防止程序跑飞或死机的一种硬件机制。它通过一个12位递减计数器来监控系统的运行状态,当计数器递减到0时,会触发系统复位。为了确保系统正常运行,程序需要定期“喂狗”,即重装载计数器的值,以防止复位发生。
IWDG 时钟源频率:IWDG 的时钟源通常是一个低速内部振荡器(LSI),在STM32F103RCT6中,固定为40KHz,不可调。
要计算 IWDG 的超时时间,需要考虑以下两个关键参数:时钟预分频(IWDG counter clock prescaler)和递减计数器重装值(IWDG down-counter reload value)。
时钟预分频:可以设置为4/8/16/.../256分频
递减计数器重装值:可设置范围0-4095(12位)
这里,预分频选择的是64,IWDG的频率是40KHz/64=625Hz;也就是说625次计数是1秒。
递减计算器重装值选择的是2500,2500/625=4,所以IWDG的超时时间是4秒。
3.生成工程源码。
三、编写代码:
1.串口printf重新定向:在usart.c中添加代码,通过printf的重定向 ,可以实现在打印printf内容时,通过串口将内容输出来,以方便调试。
2.main.c:
四、实验现象:
配置IWDG超时时间为4秒,若没及时喂狗(在4秒内未按下KEY1),则看门狗复位,并通过串口打印“超时,看门狗复位”(注意时间戳);若及时喂狗(在4秒内按下KEY1),系统不复位,并通过串口打印“及时喂狗“。
实验视频
全部评论