stm32学习笔记——独立看门狗

独立看门狗知识点:

  1. 关键字寄存器IWDG_KR:                                                                                                                                                   a、写入0xCCCC,开始启用独立看门狗;此时计数器开始从其复位值0xFFF递减计数。当计数器计数到末尾0x000时,会产生一个复位信号(IWDG_RESET);                                                                                                                                    b、写入0xAAAA(无论何时), IWDG_RLR中的值就会被重新加载到计数器中从而避免产生看门狗复位;                                                                                                                                                                                      c、写入0x5555,取消寄存器IWDG_PR和IWDG_RLR的保护功能,写入其他值会重新开启写保护(包括0xAAAA)。
  2. 预分频寄存器IWDG_PR:                                                                                                                                            
  3. 重装载寄存器IWDG_RLR:用来保存重装载到计数器中的值;
  4. 看门狗溢出时间Tout= ( (4* 2^prer) * rlr ) / 32  :                                                                                                                          Tout为看门狗溢出时间(单位为ms); prer为看门狗时钟预分频值(IWDG_PR值),范围为0~7;rlr为看门狗的重装载值(IWDG_RLR的值)。

独立看门狗配置步骤:

void IWDG_Init(u8 prer,u16 rlr)
{
    IWDG_Handler.Instance=IWDG;
    IWDG_Handler.Init.Prescaler=prer;  //设置IWDG分频系数
    IWDG_Handler.Init.Reload=rlr;      //重装载值
    HAL_IWDG_Init(&IWDG_Handler);
    HAL_IWDG_Start(&IWDG_Handler);     //开启独立看门狗
}


void IWDG_Feed(void)
{   
    HAL_IWDG_Refresh(&IWDG_Handler); 	//喂狗
}
  1. 取消寄存器写保护,设置看门狗预分频系数和重装载值
  2. 重载计数值喂狗(向IWDG_KR写入0XAAAA)                                                                                                                     编写函数IWDG_Feed,调用函数HAL_IWDG_Refresh来喂狗;

  3. 启动看门狗(向IWDG_KR写入0XCCCC) 通过调用函数HAL_IWDG_Start启动看门狗。

猜你喜欢

转载自blog.csdn.net/K_K_yl/article/details/82384173