STM32: Timer-Encoder-Reset

Ich habe meinen TIM4 als Encoder-Eingang konfiguriert und alles funktioniert gut, wenn ich TIM_GetCounter (TIM4) ausführe. Aber ich möchte den Timer-Wert auf 0 zurücksetzen (zurücksetzen?), wenn ich einen Taster mit einem Interrupt darauf drücke) und ich ziehe es an Finde keine Reset-Funktion. Ich verwende einen STM32F103 nur mit StdPeriph Lib.

Antworten (1)

Sie sollten eine für sich selbst schreiben, basierend auf der 'get'-Funktion:

uint32_t TIM_GetCounter(TIM_TypeDef* TIMx)
{
  /* Check the parameters */
  assert_param(IS_TIM_ALL_PERIPH(TIMx));

  /* Get the Counter Register value */
  return TIMx->CNT;
}

a TIM_ResetCountersollte also so aussehen:

void TIM_ResetCounter(TIM_TypeDef* TIMx)
{
  /* Check the parameters */
  assert_param(IS_TIM_ALL_PERIPH(TIMx));

  /* Reset the Counter Register value */
  TIMx->CNT = 0;
}

Wenn Sie im Referenzhandbuch nachsehen , können Sie sehen, dass das Zählerwertregister Lese- und Schreibzugriff hat. Sie können es also auf 0 setzen.

Geben Sie hier die Bildbeschreibung ein

Sie können auch eine allgemeine Satzfunktion mit einem zusätzlichen "Wert"-Parameter erstellen.