stm32之独立看门狗

该文介绍了STM32中的独立看门狗IWDG的配置方法,包括设置预分频器和重装载值,以及如何检测和处理IWDG复位。文中提供的代码示例展示了如何启用IWDG并设置超时时间,以及在独立看门狗复位时的响应操作,如LED灯状态变化。超时时间Tout可通过预分频器和重装载值计算得出。
摘要由CSDN通过智能技术生成
  1. 理解

看门狗的作用主要用于监控程序的运行,处理bug,如果不在规定的时间内喂狗,则认为程序运行出错,重置或者执行其它的步骤。

  1. 关键代码

void IWDG_Config(uint8_t prv ,uint16_t rlv)
{    
    // 使能 预分频寄存器PR和重装载寄存器RLR可写
    //IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
    IWDG_WriteAccessCmd( IWDG_WriteAccess_Enable );
    
    // 设置预分频器值
    IWDG_SetPrescaler( prv );
    
    // 设置重装载寄存器值
    IWDG_SetReload( rlv );
    
    // 把重装载寄存器的值放到计数器中
    IWDG_ReloadCounter();
    
    // 使能 IWDG
    IWDG_Enable();    
}
  1. 独立看门狗复位判断

/* 检查是否为独立看门狗复位 */
  if (RCC_GetFlagStatus(RCC_FLAG_IWDGRST) != RESET)
  {
    /* 独立看门狗复位 */
    /*  亮红灯 */
    LED_RED;

    /* 清除标志 */
    RCC_ClearFlag();
        
        /*如果一直不喂狗,会一直复位,加上前面的延时,会看到红灯闪烁
        在1s 时间内喂狗的话,则会持续亮绿灯*/
  }
  else
  {
    /*不是独立看门狗复位(可能为上电复位或者手动按键复位之类的) */
    /* 亮蓝灯 */
    LED_BLUE;
  }

4、超时时间计算

Tout = prv/40 * rlv (s),其中prv=[4,8,16,32,64,128,256]中的一个,rlv:预分频器值,取值范围为:0-0XFFF。
例如:IWDG_Config(IWDG_Prescaler_64 ,625); 其中IWDG_Prescaler_64=prv=64,
Tout=64/40 * 625=1.6*625=1000ms=1s。溢出时间为1s。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值