WDOG.c 796 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #include "main.h"
  2. static void WDOG_Init(void);
  3. static void WDOG_Feed(void);
  4. WDOGClassStruct WDOGClass = {
  5. .Init = WDOG_Init,
  6. .Feed = WDOG_Feed
  7. };
  8. /**
  9. * @brief 看门狗初始化
  10. * @param None
  11. * @retval None
  12. */
  13. static void WDOG_Init(void)
  14. {
  15. // 使能 预分频寄存器PR和重装载寄存器RLR可写
  16. IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
  17. // 设置预分频器值
  18. IWDG_SetPrescaler(IWDG_Prescaler_16); // IWDG 1s 超时溢出40k/16/2500= 1s
  19. // 设置重装载寄存器值
  20. IWDG_SetReload(0xfff);
  21. // 把重装载寄存器的值放到计数器中
  22. IWDG_ReloadCounter();
  23. // 使能 IWDG
  24. IWDG_Enable();
  25. }
  26. /**
  27. * @brief 重置看门狗
  28. * @param None
  29. * @retval None
  30. */
  31. static void WDOG_Feed(void)
  32. {
  33. // 把重装载寄存器的值放到计数器中,喂狗,防止IWDG复位
  34. // 当计数器的值减到0的时候会产生系统复位
  35. IWDG_ReloadCounter();
  36. }