day04-看门狗实验

1、在stm32F4中,有两个看门狗,独立看门狗(IWDG)和窗口看门狗(WWDG),参考手册中给出的一段解释:

  此器件具有两个嵌入式看门狗外设,具有安全性高、定时准确及使用灵活的优点。两个看门 狗外设(独立和窗口)均可用于检测并解决由

  软件错误导致的故障;当计数器达到给定的超 时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。 独立看门狗 (IWDG) 由

  其专用低速时钟 (LSI) 驱动,因此即便在主时钟发生故障时仍然保持 工作状态。窗口看门狗 (WWDG) 时钟由 APB1 时钟经预分频后提供,

  通过可配置的时间窗 口来检测应用程序非正常的过迟或过早的操作。 IWDG 最适合应用于那些需要看门狗作为一个在主程序之外,能够完

  全独立工作,并且对时 间精度要求较低的场合。WWDG 最适合那些要求看门狗在精确计时窗口起作用的应用程 序。

2、独立看门狗工作过程,正点原子中一段描述:

  在关键字寄存器(IWDG_KR)中写入 0xCCCC,开始启用独立看门狗;此时计数器开始从其 复位值 0xFFF 递减计数。当计数器计数到末尾 0x000 时,

  会产生一个复位信号(IWDG_RESET)。 无论何时,只要关键字寄存器 IWDG_KR 中被写入 0xAAAA, IWDG_RLR 中的值就会被重新 加载到计数器

  中从而避免产生看门狗复位 。 IWDG_PR 和 IWDG_RLR 寄存器具有写保护功能。要修改这两个寄存器的值,必须先向 IWDG_KR 寄存器中写入 0x5555。

  将其他值写入这个寄存器将会打乱操作顺序,寄存器将重新 被保护。重装载操作(即写入 0xAAAA)也会启动写保护功能。 接下来,我们介绍预分频寄存器            (IWDG_PR),该寄存器用来设置看门狗时钟的分频系数, 最低为 4,最高位 256,该寄存器是一个 32 位的寄存器,但是我们只用了最低 3 位,其他都是 保留位。

3、独立看门狗配置步骤:

  1、取消寄存器写保护,IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable)

  2、设置独立看门狗的预分配系数和重装载值,void IWDG_SetPrescaler(uint8_t IWDG_Prescaler);、void IWDG_SetReload(uint16_t Reload);

  3、重载计数值,喂狗动作,IWDG_ReloadCounter();

  4、启动看门狗,IWDG_Enable();

  看门狗的溢出时间计算:Tout=(4*2^prer)*rlr/32 ms,prer:分频系数0-7,rlr:重装载值;

  

 

 

 4、独立看门狗配置例程:

  1、独立看门狗初始化

// 看门狗溢出时间: Tout=((4*2^prer)*rlr)/32 (ms)
void IWDG_Init(u8 prer, u16 rlr)
{
    // 取消寄存器写保护
    IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
    //  设置预分频系数
    IWDG_SetPrescaler(prer);
    // 设置装载计数值
    IWDG_SetReload(rlr);
    // 重装载计数值
    IWDG_ReloadCounter();
    // 启动看门狗
    IWDG_Enable();
}
View Code

  2、喂狗动作:

// 喂独立看门狗
void IWDG_Feed()
{
    IWDG_ReloadCounter();   // 重新装载计数值
}
View Code

  3、主函数中,喂狗间隔大约4s,如果4s内没有及时按下按键喂狗,程序复位,led0状态重新加载

int main(void)
{ 
  u8 key;
    delay_init(168);          
    LED_Init();                
    KeyInit();
    delay_ms(200);
    IWDG_Init(4,2500);    // 溢出时间大约4s
    LED0 = 0;
    
    while(1)
    {
        key = KeyScan();
        if(key == 2)
        {
            IWDG_Feed();
        }    
    }
}
View Code

 

窗口看门狗后面继续再学习

 

posted @ 2021-07-24 15:24  笑不出花的旦旦  阅读(313)  评论(0)    收藏  举报