STM32 Timer läuft nicht richtig.

Gast #2337186
Lesenswert?
• ▲
▼
Morgen,

ich benötige einen µs-Delay und wollte dafür einen Timer dafür nutzen. 
Leider läuft dieser nicht so genau und hoffe ihr könnt mir weiterhelfen. 
Ich vermute zurzeit einen Fehler bei der Timer Clock bin mir aber keiner 
Prüfmöglichkeit bewusst wie ich testen kann ob diese richtig taktet. Es 
handelt sich um einen STM32f103RBT6. Vielleicht fällt euch aber auch ein 
Fehler in meinem Code auf:
1
  /* Time base configuration */
2
  TIM_DeInit(TIM3);
3
  TIM_TimeBaseStructure.TIM_Prescaler = (SystemCoreClock / 1000000) - 1;
4
  TIM_TimeBaseStructure.TIM_Period = usValue-1;
5
  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
6
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
7
  TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
8
  TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
9
  
10
  /* Clear the update interrput flag and finally start the timer */
11
  TIM_ClearFlag(TIM3, TIM_FLAG_Update);
12
  TIM_Cmd(TIM3, ENABLE);
13
 
14
  /* Wait for Tim3 expiring, stop timer and clear update flag. Generate the desired delay. */  
15
  while(TIM_GetFlagStatus(TIM3, TIM_FLAG_Update) == RESET);
16

17
  TIM_Cmd(TIM3, DISABLE);
18
  TIM_ClearFlag(TIM3, TIM_FLAG_Update);
#2337226
Lesenswert?
• ▲
▼
Wenn du erwartest, dass dieser gesamte Code bei Delays im unteren 
Mikrosekundenbereich ziemlich genau ist, dann unterschätzt du den durch 
Initialisierung und Library entstehenden Aufwand.

Wenn sowas einigermassen genau werden soll, dann sollte der Timer 
bereits vorher zu unkritischer Zeit initialisiert werden, so dass in der 
zeitrelevanten Phase nur noch Start und Abfrage erforderlich sind, die 
dann nicht als Lib-Aufrufe sondern über die entsprechenden Register 
erfolgen.

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.