No estoy familiarizado con el periférico particular del "perro guardián con ventana" que mencionaste, o de dónde obtiene su reloj. Es posible que el WD se ejecute desde una fuente de reloj de 32.768 KHz en tiempo real (RTC) y, por lo tanto, sea independiente de la frecuencia del procesador. Independientemente, debería haber alguna forma de calibrar la cantidad de tiempo que cuenta el temporizador de WD antes de interrumpir / reiniciar. Puede usar esto para ajustar la hora según la frecuencia de reloj actual. Para facilitar esto, ¿por qué no escribir una única función responsable de cambiar la frecuencia del reloj y actualizar los valores del temporizador WD en función de la nueva frecuencia?
Si el WD obtiene su fuente de reloj del temporizador SysTick incorporado en el CM4, revise los registros de SysTick para saber cómo cambiar los valores de conteo: ARM InfoCenter Doc en SysTick
Gran parte de esto depende del dispositivo, por lo que deberá consultar la documentación del fabricante de su dispositivo específico. Debería darte alguna orientación.
(Supongo que está utilizando un circuito divisor de reloj a bordo del procesador para cambiar la frecuencia. A pesar del comentarista anterior, no hay nada de malo en esto. Es una forma estándar de reducir la potencia. Ahora, si en realidad estaba cambiando el Frecuencia de reloj que ingresó en la parte, lo que probablemente sería una mala idea.