Forum: Mikrocontroller und Digitale Elektronik STM32 Timer4 Update Event


von vaid (Gast)


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

von vaid (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.
Lade...