He configurado el Timer 1 Channel 1 para el modo pwm 1. Usé el STM32CUBE para generar código para MDK-ARM. Parámetros como abajo-
CLOCK: 160 Mhz
CLK_DIV:NONE
PRESCALE: 3
PERIOD:3999
El valor del período para el canal 1 es 1999 para un ciclo de trabajo del 50%.
He verificado los parámetros al mirar los registros en una sesión de depuración.
Esto me está dando salida a 10 kHz como se esperaba (confirmado en el alcance). Sin embargo ... hay un fallo. Cada 200 milisegundos más o menos, la salida va a un nivel bajo durante un período corto (un par de milisegundos). Si cambio la frecuencia de salida a 20kHz, la interrupción se acorta a 100 ms, exactamente la mitad. No estoy actualizando los parámetros del temporizador (así que la precarga no importa). Cambiar el canal replica el problema en el otro canal. No se está ejecutando ningún otro código. No hay interrupciones. ¿Por qué está pasando esto? Apreciaría mucho alguna ayuda. Mañana podré publicar algún código, pero como se genera CUBE, asumo que es correcto.
Esquema en bruto:
- Configurar GPIO
- Configurar el temporizador 1
- Inicia pwm en el canal 1
- Bucle infinito.