STM32
直播中

jsqueh

8年用户 1138经验值
私信 关注
[问答]

怎样去创建并添加窗口看门狗的wwdg文件夹

窗口看门狗的本质是什么?
怎样去创建并添加窗口看门狗的wwdg文件夹?

回帖(1)

罗兰君

2021-9-23 12:18:16
  觉得用处不是很大,简略写了。
  窗口看门狗本质是一个7位递减的计数器。只是它的下限是0X40(无法修改),上线可以通过我们自己配置(但是要保证大于下限。),当计数器的值高于上限和低于下限的时候被刷新的话,就会产生一次复位信号。
  作用和独立看门狗类似。
  刷新的时候可以使用提前唤醒中断来喂狗,否则要计算超时时间(一般不用)。有闲心再来放上相关图片。
  创建wwdg文件夹,添加wwdg的文件,添加编译路径。
  wwdg.h
  #ifndef _WWDG_H
  #define _WWDG_H
  #include “system.h”
  void WWDG_Init(void );
  #endif
  wwdg.c
  #include “wwdg.h”
  #include “led.h”
  #include “stdio.h”
  void WWDG_Init(void )
  {
  NVIC_InitTypeDef NVIC_InitStructure;
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE);
  WWDG_SetWindowValue(0x5f); //设立上窗口值
  WWDG_SetPrescaler(WWDG_Prescaler_8); //设置分频系数
  //设置优先级
  NVIC_InitStructure.NVIC_IRQChannel=WWDG_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;
  NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
  NVIC_Init(&NVIC_InitStructure);
  WWDG_Enable(0x7f); //使能计数器的同时给计数器赋初值
  WWDG_ClearFlag(); //排除其他可疑原因
  WWDG_EnableIT(); //开启窗口看门狗的中断
  }
  //使用中断喂狗
  void WWDG_IRQHandler(void)
  {
  WWDG_SetCounter(0x7f);
  WWDG_ClearFlag();
  led2=!led2;
  }
  main.c
  #include “system.h”
  #include “SysTick.h”
  #include “led.h”
  #include “pwm.h”
  #include “Usart.h”
  #include “key.h”
  #include “wwdg.h”
  //时间:2020-1-17
  //制作者:SaBo
  //适用:STM32F103ZET6 (普中科技 PZ6800L)
  /*********************************************
  程序写好后,下载到开发板上,打开我们的串口调试助手,
  设置波特率为9600,数据位8位,停止位1位
  led2会不断地闪烁
  led1的闪烁表明我们的程序是否正常在进行。(检测作用)
  *********************************************/
  int main()
  {
  SysTick_Init(72);
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  LED_Init();
  USART1_Init(9600);
  led1=0;
  delay_ms(500);
  WWDG_Init();
  while(1)
  {
  led1=1;
  }
  }
举报

更多回帖

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