STM32F103 - Iniciar temporizadores al mismo tiempo

1

Estoy usando una placa STM32F103 ( Blue Pill ), y tengo una aplicación sencilla donde Necesito tener dos pulsos en diferentes pines.

Logro esto usando Timer3 y Timer4 configurados con salida PWM en dos canales (uno cada uno). El problema es que los temporizadores no se inician al mismo tiempo y tienen un desplazamiento de aproximadamente 3 µs. El reloj principal funciona a 28 MHz.

En el código, cambiar el orden de estas dos líneas determinará qué temporizador comienza primero (cuál de ellas está adelante con 3 µs de la otra):

  HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2);
  HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_2);

¿Hay algo que pueda hacer? Se debe tener en cuenta que en el mismo programa tengo Timer1 configurado como Capture Compare No Output, y Timer2 para generar un reloj de 1.4 MHz de la misma manera que Timer3 y Timer4.

Edición posterior. La función llamada en el controlador HAL:

HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel)
{
  /* Check the parameters */
  assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));

  /* Enable the Capture compare channel */
  TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE);

  if(IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET)
  {
    /* Enable the main output */
    __HAL_TIM_MOE_ENABLE(htim);
  }

  /* Enable the Peripheral */
  __HAL_TIM_ENABLE(htim);

  /* Return function status */
  return HAL_OK;
}
    
pregunta Cezar Chirila

1 respuesta

6

La mejor manera de hacerlo será mediante la sincronización del temporizador. Consulte la sección 15.3.15 de el manual de referencia del STM32F1 .

Establezca TIM3 en el modo maestro "Habilitar" (campo MMS de TIM3_CR2 ), y configure TIM4 en el modo esclavo "Modo disparo" con ITR2 de disparo ( TS y SMS campos de TIM4_SMCR ). Si ha configurado todo correctamente, al iniciar TIM3 también se iniciará simultáneamente TIM4.

(Probablemente haya alguna forma de hacerlo utilizando la HAL, pero no estoy lo suficientemente familiarizado para decir qué podría ser).

    
respondido por el duskwuff

Lea otras preguntas en las etiquetas