文章目录
前言
使用STM32CubeIDE实现独立看门狗实验。
硬件:STM32F103C8T6最小系统板 + USB转TTL模块
软件:STM32CubeIDE
一、实验目的
实现独立看门狗实验,若不及时喂狗,串口输出 “ 独立看门狗复位!”。
IWDG的溢出时间为1s。
二、学习内容
- 使用独立看门狗( IWDG )
三、实践操作
1.看门狗简介
看门狗:本质是个递减的计数器。
当程序有BUG或硬件问题导致的程序卡死或跑飞时,看门狗可及时复位程序。
系统复位有以下几种形式:
- NRST引脚上的低电平;
- 独立看门狗计数终止( IWDG复位 );
- 窗口看门狗计数终止( WWDG复位 );
- 软件复位( SW复位 );
- 低功耗管理复位。
作用:防止程序卡死或程序跑飞,保证系统的可靠性和稳定性
STM32有独立看门狗(IWDG)和窗口看门狗(WWDG) 两种类型。
独立看门狗(IWDG):独立工作,对时间精度要求较低;
窗口看门狗(WWDG):时间精度相对较高,并需在指定的窗口期内喂狗,否则复位程序
2.独立看门狗(IWDG)
IWDG简介
IWDG( Independent Watchdog ),独立看门狗。
本质为能产生系统复位信号的计数器。
IWDG特性:
- 递减的计数器;
- 时钟由独立的RC振荡器( LSI 40KHz )提供( 可在待机和停止模式下运行 ),有VDD就可以工作,但不是很精准;
- 看门狗被激活后,当递减计数器( 12位 )计数到0x000时产生复位。
喂狗操作:计数器计数到0之前,重装载计数器的值,防止复位
程序跑飞可能是因为:
- 外界电磁干扰;
- 硬件异常;
- 软件异常。
IWDG作用:主要用于检测外界电磁干扰,或硬件异常导致的程序跑飞问题;在一些需要高稳定性的产品中,并且对时间精度要求较低的场合。
注意:IWDG是异常处理的最后手段,不可依赖,应在设计时尽量避免异常的发生!
IWDG工作原理
递减计数器的上限由看门狗的重装载寄存器设置( 最大 0xFFF - 1 ),下限是不变的0x000
可以从上图看到,如果不及时喂狗( CNT == 0 ),则会导致系统复位,因此CPU必须及时喂狗!
IWDG溢出时间计算
其中:
Tout 是看门狗溢出时间;
psc 是看门狗预分频系数;
rlr 是看门狗重装载值;
fIWDG 是看门狗的时钟频率。
STM32F103的看门狗超时时间表
| 预分频系数 | PR[2:0] | 最短时间(ms) | 最长时间(ms) |
|---|---|---|---|
| /4 | 0 | 0.1 | 409.6 |
| /8 | 1 | 0.2 | 819.2 |
| /16 | 2 | 0.4 | 1638.4 |
| /32 | 3 | 0.8 | 3276.8 |
| /64 | 4 | 1.6 | 6553.6 |
| /128 | 5 | 3.2 | 13107.2 |
| /256 | 6或7 | 6.4 | 26214.4 |
根据实验目的IWDG溢出时间为1s,先确定预分频系数,再计算出重装载值。
本次实验采用 psc = 16,从而计算出 rlr = 2500。
3.硬件介绍
硬件:STM32F103C8T6最小系统板 + USB转TTL模块
利用USART2进行串口输出( PA2->USART_TX / PA3->USART_RX )
实物图如下图所示:

注意:两个设备之间RX->TX / TX->RX
4.软件介绍
首先新建工程并进行初始化配置
在此不进行赘述,详细步骤可移步至之前文章:4.STM32CubeIDE按键实验
与之前文章不同的是,需要配置IWDG,如下图所示:
由上图可以看到,先使能IWDG,在进行看门狗预分频系数( psc )与看门狗重装载值( rlr )的配置,最终配置完成IWDG的溢出时间为1s。
接下来进行独立看门狗实验的代码编程
首先代码逻辑如下图所示:

本文详细介绍了如何在STM32F103C8T6平台上使用STM32CubeIDE实现独立看门狗IWDG的实验,包括看门狗的工作原理、溢出时间和编程操作,以及硬件和软件配置,以确保系统的稳定性和可靠性。

被折叠的 条评论
为什么被折叠?



