hal_wdg.c 744 B

123456789101112131415161718192021222324252627282930
  1. #include "hal_wdg.h"
  2. #include "sys_timer.h"
  3. IWDG_HandleTypeDef IWDG_Handler; //独立看门狗句柄
  4. //初始化独立看门狗
  5. //prer:分频数:IWDG_PRESCALER_4~IWDG_PRESCALER_256
  6. //rlr:自动重装载值,0~0XFFF.
  7. //时间计算(大概):Tout=((4*2^prer)*rlr)/32 (ms).
  8. void HAL_WdgInit(uint8_t prer,uint16_t rlr)
  9. {
  10. IWDG_Handler.Instance=IWDG;
  11. IWDG_Handler.Init.Prescaler=prer; //设置IWDG分频系数
  12. IWDG_Handler.Init.Reload=rlr; //重装载值
  13. HAL_IWDG_Init(&IWDG_Handler); //初始化IWDG,默认会开启独立看门狗
  14. }
  15. static void wdg_feed_timer_callback()
  16. {
  17. HAL_IWDG_Refresh(&IWDG_Handler);//喂狗
  18. }
  19. //喂独立看门狗
  20. void HAL_WdgFeed(void)
  21. {
  22. HAL_TimerRegister(wdg_feed_timer_callback, 1000);
  23. }