STM32 Timer4 Update Event

Gast #2297844
Lesenswert?

Hallo!

Mich ärgert mal wieder mein stm32f103rbt6...

Ich möchte Timer 4 so konfigurieren, dass er an Channel 1 eine PWM 
ausgibt.
1
void TIM4_Configuration(void)
2
{
3
  /* Compute the prescaler value */
4
  PrescalerValue = (uint16_t) (SystemCoreClock / 8000000) - 1;
5
  /* Time base configuration */
6
  TIM_TimeBaseStructure.TIM_Period = 1024;
7
  TIM_TimeBaseStructure.TIM_Prescaler = PrescalerValue;
8
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;
9
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
10

11
  TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
12

13
  /* PWM1 Mode configuration: Channel2 */
14
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
15
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
16
  TIM_OCInitStructure.TIM_Pulse = timepulse;
17
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
18
  //TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset;
19

20
  TIM_OC1Init(TIM4, &TIM_OCInitStructure);
21

22
  TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);
23

24
  TIM_ARRPreloadConfig(TIM4, ENABLE);
25

26
  /* TIM3 enable counter */
27
  TIM_Cmd(TIM4, ENABLE);
28
}

Timer läuft auch super, jetzt möchte ich aber den Duty Cycle im Programm 
anpassen. Dazu wird timepulse verändert und ein Update Event generiert.
1
TIM_GenerateEvent(TIM4,TIM_EventSource_Update);

Leider findet aber keine Refresh des Wertes statt. Man sieht deutlich, 
dass der Timer neu initialisiert wird (flackern auf dem Oszi) aber eben 
der Duty Cycle ändert sich nicht. Hat jemand eine Idee? Ist das 
vielleicht der falsche Befehl?

Gruß und Dank fürs Lesen

vaid
Gast #2297902
Lesenswert?

Hat sich erledigt.
Manchmal macht es Sinn sowas einfach nieder zu schreiben... ;-)

Ich habe nur die Variable geändert, den Wert aber nicht ins Register 
übertragen.
Und nun auch den tollen Befehl
1
TIM_SetCompare1(TIM4,timepulse);
gefunden.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren