Entendiendo los temporizadores, contadores y registros de preescala en el STM32

2

Así que estoy tratando de configurar una interrupción periódica muy simple en mi placa de descubrimiento STM32VL usando las bibliotecas libopencm3 en Linux. He consultado la documentación y solo quiero verificar con alguien que entiendo lo que está pasando.

Tengo entendido que el registro de preescalador ajusta el reloj interno a otra frecuencia / reloj que el temporizador ve realmente. es decir, se configura el registro de prescaler del temporizador a 24Mhz / DesiredHz para que el temporizador funcione a la frecuencia deseada. ¿Esto es correcto?

Suponiendo que sea correcto, digamos que quiero generar una interrupción en cada ciclo de reloj del temporizador. No vi nada en los documentos que me permitiera hacer eso, además de establecer el registro de período en 1. Esto generaría una interrupción por desbordamiento, ¿todo correcto?

    
pregunta Caustic

1 respuesta

3

Si acaba de establecer el período de registro en 1, esto no habilitará automáticamente la generación de interrupciones. Deberá realizar 2 pasos adicionales:

  1. Habilite la interrupción de 'actualización' para su temporizador usando la función TIM_ITConfig ().
  2. Habilite la fuente de interrupción del temporizador en el controlador de interrupción llamando a NVIC_Init () con los parámetros apropiados.

Por supuesto, no debe olvidar habilitar la sincronización de su temporizador con el temporizador APB1PeriphClockCmd ().

Aquí hay un ejemplo detallado sobre cómo configurar los temporizadores en STM32F4-Discovery: enlace

STM32VL-Discovery es un poco diferente, sin embargo, los pasos principales son los mismos.

    
respondido por el bazis

Lea otras preguntas en las etiquetas