Timer auf Null setzen

Gast #4939223
Lesenswert?
• ▲
▼
Hallo,

ich verwende den STM32F303 und habe ein kleines Problem mit dem Timer. 
Ich starte Timer2 mittels der Funktion void start_timer(). Der Timer 
selber funktioniert grundsätzlich.
Sobald ein bestimmtes Ereignis auftritt schalte ich den Timer mittels 
der Funktion void stop_timer() aus. Funktioniert auch noch...
Aber: wenn ich ein weiteres Mal den Timer starte, habe ich mittels Oszi 
festgestellt, dass der Timer2 scheinbar wieder da anfängt, wo er beim 
unterbrechen aufgehört hat. Offensichtlich muss ich den Wert wieder 
reseten (was beim Ausschalten des Timers scheinbar nicht automatisch 
passiert).
Aber meine Frage ist: Wie mache ich das? Wie lautet der fehlende Code 
dafür?
Danke für eure Hilfe!

1
void Timer2_Configuration(void)
2
{
3
    TIM_TimeBaseInitTypeDef TIM_TimeBase_InitStructure;
4

5
    TIM_TimeBase_InitStructure.TIM_ClockDivision = TIM_CKD_DIV1;            // CKD - Clock division: TDTS = Tck_tim
6
    TIM_TimeBase_InitStructure.TIM_CounterMode = TIM_CounterMode_Up;
7
    TIM_TimeBase_InitStructure.TIM_Period = 279;                            // Theoretisch: 281250Hz / 281 = ~1KHz -> 1ms;   besser TIM_Period=279 (mit Oszi gemessen)
8
    TIM_TimeBase_InitStructure.TIM_Prescaler = 256;                         // 72MHz / 256 = 281250Hz
9
    TIM_TimeBaseInit(TIM2, &TIM_TimeBase_InitStructure);
10

11
    TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
12
    NVIC_EnableIRQ(TIM2_IRQn);
13
    TIM_Cmd(TIM2, DISABLE);
14

15

16
} // Timer2_Configuration
17

18

19
void TIM2_IRQHandler(void)
20
{
21
  TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
22
  Timeout = 0;
23
} // void TIM2_IRQHandler
24

25

26

27
void start_timer(void)
28
{
29
    Timeout = 1;
30
    TIM_Cmd(TIM2, ENABLE);                  // Timer starten
31
}
32

33

34

35
void stop_timer(void)
36
{
37
    Timeout = 1;
38
    TIM_Cmd(TIM2, DISABLE);                  // Timer stoppen
39
}

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.