Question
While initializing window watchdog it redirects to reset handler
I'm trying to test the window watchdog timer but when I'm calling HAL_WWDG_Init(), it redirects to reset handler and whole system restarts. Below is my code, I'm showing here only important lines.
/******************************************/
WWDG_HandleTypeDef hWWDG; // In the global
int main()
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_WWDG_Init();
HAL_Delay(20);
HAL_WWDG_Refresh(&hWWDG);
if( __HAL_RCC_GET_FLAG(RCC_FLAG_WWDGRST) == SET)
{
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_13, GPIO_PIN_SET);
__HAL_RCC_CLEAR_RESET_FLAGS();
}
else
{
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_13, GPIO_PIN_RESET);
}
while (1)
{
// HAL_WWDG_Refresh(&hWWDG);
HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_12);
HAL_Delay(42);
HAL_WWDG_Refresh(&hWWDG);
}
}
}Below is the code for clock initialization
void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct;
RCC_ClkInitTypeDef RCC_ClkInitStruct;
__PWR_CLK_ENABLE();
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE2);
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
RCC_OscInitStruct.HSICalibrationValue = 16;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
HAL_RCC_OscConfig(&RCC_OscInitStruct);
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK |
RCC_CLOCKTYPE_PCLK1 |RCC_CLOCKTYPE_PCLK2 | RCC_CLOCKTYPE_SYSCLK;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2);
HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);
HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);
HAL_NVIC_SetPriority(SysTick_IRQn,0,0);
}window watchdog initialization code
static void MX_WWDG_Init(void)
{
__HAL_RCC_WWDG_CLK_ENABLE();
WWDG_InitTypeDef WWDG_InitStruct;
hWWDG.Instance = WWDG;
WWDG_InitStruct.Prescaler = WWDG_PRESCALER_8;
WWDG_InitStruct.Window = 80;
WWDG_InitStruct.Counter = 127;
WWDG_InitStruct.EWIMode = WWDG_EWI_ENABLE;
__HAL_WWDG_ENABLE(&hWWDG);
if(HAL_WWDG_Init(&hWWDG) == HAL_OK)
{
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_15, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_15, GPIO_PIN_RESET);
}else
{
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_15, GPIO_PIN_SET);
}
}can someone suggest what is the cause for getting reset. Don't look at values for counter and window they are randomly taken.
