STM32 us delay

OP (Firma: mumu) #3460118
Ich habe ein STM32F4Discovery Board und schaffe es einfach nicht ein 
genaues us (Mikrosekunden) Delay zu finden.

Das Delay sollte von 1-3000us Delay bieten.

Variante 1 For:

for(i=0;i<someValue;i++) {}   --> Leider ungenau wegen integer Sprung

Variante 2 Timer:

void delay_init( void ) {
  /* Enable timer clock */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
  /* Time base configuration */
  TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
  TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
  TIM_TimeBaseStructure.TIM_Prescaler =  (uint16_t) ((SystemCoreClock 
/2) / 28000000) - 1;
  TIM_TimeBaseStructure.TIM_Period = 665;
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

 /* Enable counter */
  TIM_Cmd(TIM3, ENABLE);
}

void delay_us( uint16_t uSecs ) {
  uint16_t start = TIM3->CNT;
  /* use 16 bit count wrap around */
  while((uint16_t)(TIM3->CNT - start) <= uSecs);
}

Hier kann ich Prescale als auch Period setzen wie ich möchte, es ändert 
sich nicht viel. Leider

Wäre schön wenn mir jemand helfen könnte.

Das STM32F4Discovery lauft bei 168MHz und hat einen 8MHz Quarz.
OP (Firma: mumu) #3461108
Ich bin auf diesen Beitrag gestossen, habe die Delay_us Funktion 
getestet. Leider ergibt ein Delay_us(1) ein Delay von 6us. Wenn ich 
Delay_us(2) setze, erhalte ich in Wahrheit 9.4us.

Jemand eine Idee dazu?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.