系统时钟:
The WWDG clock is prescaled from the APB clock and has a configurable time-window that
can be programmed to detect abnormally late or early application behavior.
/** @defgroup WWDG_Prescaler WWDG Prescaler* @{*/
#define WWDG_PRESCALER_1 0x00000000u /*!< WWDG counter clock = (PCLK1/4096)/1 */
#define WWDG_PRESCALER_2 WWDG_CFR_WDGTB_0 /*!< WWDG counter clock = (PCLK1/4096)/2 */
#define WWDG_PRESCALER_4 WWDG_CFR_WDGTB_1 /*!< WWDG counter clock = (PCLK1/4096)/4 */
#define WWDG_PRESCALER_8 (WWDG_CFR_WDGTB_1 | WWDG_CFR_WDGTB_0) /*!< WWDG counter clock = (PCLK1/4096)/8 */
寄存器配置
hwwdg.Instance = WWDG;hwwdg.Init.Prescaler = WWDG_PRESCALER_1;hwwdg.Init.Window = 240;hwwdg.Init.Counter = 240;hwwdg.Init.EWIMode = WWDG_EWI_DISABLE;if (HAL_WWDG_Init(&hwwdg) != HAL_OK){Error_Handler();}
理论计算时间(1分频)
T = 240 ∗ 4096 8000000 ∗ 1000 = 122.88 m s T = \frac{240*4096}{8000000} *1000= 122.88ms T=8000000240∗4096∗1000=122.88ms
2分频时间为: 2*122.88 = 245.76ms
喂狗:
/*** @brief Refresh the WWDG.* @param hwwdg pointer to a WWDG_HandleTypeDef structure that contains* the configuration information for the specified WWDG module.* @retval HAL status*/
HAL_StatusTypeDef HAL_WWDG_Refresh(WWDG_HandleTypeDef *hwwdg)
{/* Write to WWDG CR the WWDG Counter value to refresh with */WRITE_REG(hwwdg->Instance->CR, (hwwdg->Init.Counter));/* Return function status */return HAL_OK;
}