STM32
直播中

凌晨3点睡

12年用户 563经验值
私信 关注
[问答]

窗口看门狗WWDG的配置步骤有哪些

窗口看门狗WWDG的时钟来自哪?
窗口看门狗WWDG的配置步骤有哪些?

回帖(1)

张琴

2021-9-23 10:44:14
  窗口看门狗WWDG其实和独立看门狗类似,它是一个7位递减计数器不断的往下递减计数,当减到一个固定值0x40时还不喂狗的话,产生一个MCU复位,这个值叫窗口的下限,是固定的值,不能改变
  窗口看门狗(WWDG)的时钟来自PCLK1,即挂接在APB1总线上,APB1时钟最大为36M
  窗口值由配置寄存器WWDG_CFR的[6:0]位设置,所以最大值0x7F
  当递减计数器递减到0x40的时候,还不会马上产生复位,如果使能了提前唤醒中断,则产生提前唤醒中断,提醒喂狗,随后将复位
  WWDG配置步骤
  1.使能WWDG时钟
  2.设置WWDG窗口值
  3.设置WWDG预分频因子
  4.初始化NVIC外设,设置WWDG中断优先级
  5.初始化计数器值,使能WWDG
  6.使能WWDG中断
  7.编写WWDG中断处理函数
  举例
  void WWDG_IRQHandler()
  {
  if(WWDG_GetFlagStatus() == 1)
  {
  WWDG_SetCounter(0x70); //喂狗
  printf(“WWDG_IRQHandler.n”);
  }
  WWDG_ClearFlag();
  }
  void WWDG_init()
  {
  NVIC_InitTypeDef nvic =
  {
  WWDG_IRQn, 2, 2, ENABLE };
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE); //使能WWDG时钟
  WWDG_SetWindowValue(0x50); //设置WWDG窗口值
  WWDG_SetPrescaler(WWDG_Prescaler_8); //设置WWDG预分频因子
  NVIC_Init(&nvic); //初始化NVIC
  WWDG_Enable(0x70); //初始化计数器值,使能WWDG WWDG_ClearFlag();
  WWDG_EnableIT(); //使能WWDG中断
  }
举报

更多回帖

发帖
×
20
完善资料,
赚取积分