Forum: Mikrocontroller und Digitale Elektronik STM32F4-Discovery Systick


von Dennis X. (Gast)


Lesenswert?

Hallo zusammen,
ich habe mit dem STM32F4-Disco das Problem, dass ich einen 1ms Systick 
nicht hin bekomme. Die Beispiele im Netz sind eindeutig, aber bei mir 
kommt der Systick Interrupt nur alle 3.14 (PIT!!!) Millisekunden.
Programmiert wird in C++ und der CooCox IDE.
1
int main()
2
{
3
  SystemInit();
4
  RCC_ClocksTypeDef RCC_Clocks;
5
  // Timer auf 1ms einstellen
6
  RCC_GetClocksFreq(&RCC_Clocks);
7
  SysTick_Config(RCC_Clocks.HCLK_Frequency / 1000);
8
9
  while(1)
10
  {
11
  }
12
}
13
14
extern "C" void SysTick_Handler(void)
15
{
16
  // Tick für Pause
17
  if(Systick_Delay != 0) 
18
  {
19
    Systick_Delay--;
20
  }
21
}

Die Delays sind viel zu lange und ich hab das ganze mit einem Pin Toggle 
nachgemessen. Das bringt mir zwar wieder ungenauigkeiten, aber nicht in 
dieser Größenordnung. Hat jemand eine Ahnung? Die Takte sind alle genau 
so wie im RCC Header beschrieben.
Wäre sehr dankbar wenn jemand eine Vermutung hätte, ich weiß nicht mehr 
wo ich weiter suchen sollte.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Dennis X. schrieb:
> ich habe mit dem STM32F4-Disco das Problem, dass ich einen 1ms Systick
> nicht hin bekomme. Die Beispiele im Netz sind eindeutig, aber bei mir
> kommt der Systick Interrupt nur alle 3.14 (PIT!!!) Millisekunden.

HSE_VALUE = 8000000 im Projekt definiert?

PLL_M von 25 auf 8 korrigiert in system_stm32f4xx.c?

von Dennis X. (Gast)


Lesenswert?

Frank... Danke! Genau das war es. Bin irgendwie stur davon ausgegangen, 
dass wenn die IDE das board schon kennt, dass dann wenigstens auch der 
System startup soweit läuft. Nächstes mal besser zwei mal nachschauen.
-D

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.