WWDG(窗口看門狗)在窗口期喂狗
?
?作用:
?原理:
?框圖
?WWDG寄存器:
WWDG_CR控制寄存器
?WWDG_CFR配置寄存器
?
?狀態寄存器WWDG_SR
超時時間計算公式
?最小最大超時值
HAL配置函數:
?
1. IWDG 和 WWDG 的區別
-
IWDG(獨立看門狗)
IWDG
是一個獨立于主系統時鐘的外設,它的時鐘源是由 內部低速時鐘(LSI)提供。- 當系統啟動時,IWDG 的時鐘源已經是啟用的,因此你不需要顯式地開啟時鐘。
IWDG
的時鐘是始終運行的,這也是它不需要你額外啟用時鐘的原因。你只需要初始化并配置相關的參數(如預分頻器和計數器值)即可。
-
WWDG(窗口看門狗)
WWDG
的時鐘源是由 APB 時鐘(PCLK1)提供,這就是為什么你需要顯式地啟用WWDG
時鐘。WWDG
的時鐘需要通過 RCC 的時鐘控制寄存器來啟用,在初始化時需要顯式調用__HAL_RCC_WWDG_CLK_ENABLE()
。
2. 為什么 IWDG
不需要顯式開啟時鐘?
IWDG
使用的時鐘(LSI)在芯片的電源管理和時鐘控制系統中是自動啟用的,而且它的時鐘獨立于主系統時鐘,所以無需額外配置。
3. 總結:
- IWDG:自動啟用時鐘,不需要額外配置。
- WWDG:依賴于外部時鐘(PCLK1),需要手動啟用時鐘。
?WWDG:
IWDG:
我上面的都是沒寫回調函數的
下面是回調函數加中斷(在這里是WWDG的中斷(即喚醒中斷))
HAL_WWDG_Init()會自動調用這個函數,初始時是空的,要我們自己寫內容(重定義函數)
?
?HAL_WWDG_IRQHandler是公共處理函數,調用它之后,它會調用提前喚醒回調函數。用這種方法會自動清除標志位,如果不用這種方法那就要自己清除標志位
?
?