STM32WB IWDG Function Introduction 

獨立看門狗(IWDG)

上一章說到待機模式可以通過IWDG喚醒,獨立看門口功能框圖如下。實際上獨立看門口狗就是一個遞減計數器,當計時器的值減到0時,IWDG會產生一個複位信號,系統復位重新啟動。為避免產生看門狗復位,則需在計數器減到0之前重載計數器,即“餵狗”。當程序出錯時沒有刷新計數器,計數器遞減到0,系統復位重新啟動,避免程序繼續錯誤運行。
PS:Since its clock is an independent 32-kHz low-speed internal RC oscillator (LSI), it remains active even if the main clock
fails.

IWDG STM32CubeMX設定

  • IWDG counter clock prescaler 預分頻器值設為32
  • IWDG down-counter reload value 重裝載寄存器值設為 1000

超時時間 Tout = (4*2^prv) / LSI * rlv (s) prv是預分頻器寄存器的值,rlv是重裝載寄存器的值

由圖知 LSI 為 32 KHz,當 prv 取 IWDG_ PRESCALER_32 ,rlv 取 1000時,Tout=32/32*1000=1s。
即設置 1s 的超時溢出。

MX_IWDG_Init();
  /* USER CODE BEGIN 2 */
  printf("\n\r***** IWDG Test Start *****\n\r");
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    printf("\n\r Refreshes the IWDG !!!\n\r");
    HAL_IWDG_Refresh(&hiwdg);
    HAL_Delay(800);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }

因為設置超時溢出為 1 秒,所以這裡每隔 800 毫秒餵狗一次 HAL_IWDG_Refresh(&hiwdg);

Leave a Comment

Your email address will not be published. Required fields are marked *

Shopping Cart