当独立看门狗计数器溢出时,独立看门狗将产生一个中断。
IWDT_InitStruct.IWDT_ITState = ENABLE;
IWDT_InitStruct.IWDT_OverFlowAction = IWDT_OVERFLOW_ACTION_INT; //溢出后产生中断不复位
IWDT_InitStruct.IWDT_Pause = IWDT_SLEEP_PAUSE;
IWDT_InitStruct.IWDT_Prescaler = IWDT_Prescaler_DIV4;
IWDT_InitStruct.IWDT_ReloadValue = (IWDT_FREQ >> 2) / 1000 * 280 - 1; // 由于IWDT的时钟为RC10K, 设置为280实际溢出时间为256ms左右
IWDT_InitStruct.IWDT_WindowValue = 0xFFF;
IWDT_Init(&IWDT_InitStruct);
IWDT_Cmd();
中断函数
void WDT_IRQHandlerCallback(void)
{
if (CW_IWDT->SR & IWDT_SR_OV_Msk)
{
IWDT_ClearOVFlag();
}
}
|