天天看點

學習記錄---STM32 WWDG視窗看門狗學習

概述

視窗看門狗通常被用來監測,由外部幹擾或不可預見的邏輯條件造成的應用程式背離正常的運作序列而産生的軟體故障。除非遞減計數器的值在T6位變成0前被重新整理,看門狗電路在達到預置的時間周期時,會産生一個MCU複位。在遞減計數器達到視窗寄存器數值之前,如果7位的遞減計數器數值(在控制寄存器中)被重新整理, 那麼也将産生一個MCU複位。這表明遞減計數器需要在一個有限的時間視窗中被重新整理。

  • 條件複位

    當遞減計數器的值小于0X40則啟動複位

    當遞減計數器在視窗外被重裝載則複位

  • 如果啟動了視窗看門狗且開啟中斷,當遞減計數器計數到0X40時産生早期喚醒中斷(EWI),用于重裝載計數器避免看門狗複位
  • 學習記錄---STM32 WWDG視窗看門狗學習
    STM32中文參考手冊18.3
    學習記錄---STM32 WWDG視窗看門狗學習

    視窗看門狗逾時時間公式

    TWWDG = TPCLK1 x 4096 x 2^WDGTB x (T[5:0] + 1)

    學習記錄---STM32 WWDG視窗看門狗學習

步驟

  1. 使能時鐘

    視窗看門狗使用APB1時鐘分頻

  1. 設定分頻系數
  1. 設定視窗值
  1. 使能看門狗
  1. 清除中斷标志位
  1. 初始化中斷設定
NVIC_wwdg_Init.NVIC_IRQChannel=WWDG_IRQn;
	NVIC_wwdg_Init.NVIC_IRQChannelCmd=ENABLE;
	NVIC_wwdg_Init.NVIC_IRQChannelPreemptionPriority=0;
	NVIC_wwdg_Init.NVIC_IRQChannelSubPriority=2;
	NVIC_Init(&NVIC_wwdg_Init);
           
  1. 使能中斷
  1. 編寫中斷服務函數
void WWDG_IRQHandler()
{
	
	WWDG_SetCounter(WWDG_ReloadValue);
	WWDG_ClearFlag();
}