STM32独立看门狗实验(IWDG)

        独立看门狗(Independent Watchdog,简称IWDG)是嵌入式系统中常用的一种硬件监视器。它通常由一个计时器和一个特殊的倒数计数器组成。独立看门狗的作用是监控系统运行状态并在系统出现死锁或其他异常情况时进行重启。

        具体来说,独立看门狗通过定期向其喂狗(写入特定寄存器或执行特定指令)来确认系统处于正常运行状态。如果系统由于软件错误、死循环或其他故障导致无法继续喂狗,那么独立看门狗将在预定的超时时间内未被喂狗而触发,从而导致系统复位或采取其他预设的应对措施。

        独立看门狗通常被用于提高嵌入式系统的可靠性和稳定性,尤其是在一些对系统稳定性要求较高的场合,如工业控制、汽车电子等领域。通过独立看门狗的监控和保护,可以避免系统长时间停滞或陷入死循环而导致的故障,从而提高了系统的可靠性和稳定性。

        本章我们将通过实验,对独立看门狗进行实例讲解。

实验要求:开启STM32的独立看门狗,按下按键即喂狗,如果超时未喂狗,则看门狗复位系统,用指示灯指示系统复位。

原理图:

这里我们选择按键Key4(PA0)来进行喂狗,当我们按下Key4时,就会进行喂狗,如果及时的喂了狗,程序就不会复位(喂狗的本质就是更新递减计数器),喂狗之后递减计数器就不会减到零,也就不会产生复位异常;如果超时没有喂狗(没有按下按键),看门狗就会超时复位。

将Key4(PA0)设置为输入,用来喂狗,LED4(PE2)设置为输出,用来显示系统复位

(1)设置独立看门狗(IWDG)

独立看门狗使用的是LSI时钟 32kHz,对它进行32分频,那么它的时钟就是1kHz,周期就是1ms,也就是说每过1ms,计数器递减一次,重载寄存器决定它减多少次为0,比如,重载寄存器设置为3000,那么3s后减到0,看门狗复位的时间就是3s,如过我们在3s内更新计数器CNT,它就不会复位;超过3s没有喂狗,递减计数器就会递减到0,复位我们的系统。

(2)设置外部时钟(crystal/ceramic resonator)

(3)打开串口,选择异步通信(Asynchronous)

代码:

灯闪烁了一下,就说明系统复位了(系统默认输出低电平(点亮),所以先将灯熄灭)

HAL_GPIO_WritePin(GPIOE, GPIO_PIN_2, GPIO_PIN_SET); //熄灭
	
HAL_Delay(500);
	
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_2, GPIO_PIN_RESET);//点亮

在主函数里刷新操作(喂狗操作)

if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_RESET)
{
	HAL_IWDG_Refresh(&hiwdg);
}

如果按了按键,进去喂狗,就不会出现复位现象;如果没按按键,喂狗操作得不到执行,程序复位。

注:喂狗操作在3s内,程序才不会复位。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值