Forum: Mikrocontroller und Digitale Elektronik STM32 Systick Timer


von erna (Gast)


Lesenswert?

Hallo,

ich möchte mithilfe der ST Std. Periph. Library den Systick Timer eines 
STM32F103 benutzen. Ich halte mich eigentlich sehr streng an das 
mitgelieferte Beispiel, aber er bleibt immer bei 
while(systick_delay_var!=0); hängen. Kommentiere ich diese Zeile aus, 
läuft das Programm weiter ab (Ein Display wird bei "/* Tue etwas... */" 
aktualisiert etc.).
Was kann ich denn da falsch gemacht haben? (Die Initialisierung des 
Timers sollte doch eigentlich idiotensicher sein..)
1
/* Auszüge aus meiner main.c: */
2
3
void TimingDelay_Decrement(void);
4
5
uint8_t systick_delay_var=0;
6
7
int main()
8
{
9
    SystemInit();
10
    
11
    /* Setup SysTick Timer for 1 msec interrupts  */
12
    if (SysTick_Config((72000000 / 1000)))
13
    { 
14
        /* Capture error */ 
15
        while (1);
16
    }
17
18
    while(1)
19
    {
20
        systick_delay_var=100;
21
22
        /* Tue etwas... */
23
24
        /* Warte */
25
        while(systick_delay_var!=0);
26
    }
27
}
28
29
void TimingDelay_Decrement(void)
30
{
31
  if (systick_delay_var != 0)
32
  { 
33
    systick_delay_var--;
34
  }
35
}
36
37
38
/* Auszüge aus meiner stm32f10x_it.c: */
39
40
extern void TimingDelay_Decrement(void);
41
42
void SysTick_Handler(void)
43
{
44
    TimingDelay_Decrement();
45
}

Gruß erna

von (prx) A. K. (prx)


Lesenswert?

Das Übliche: volatile fehlt.

von erna (Gast)


Lesenswert?

Oha peinlich peinlich, hät ich irgendwie bemerken sollen. Vielen Dank!
Ich hätte ja auch einfach mal nachgucken können, was das __IO vor den 
Variablen in den Beispielen von ST bedeutet..
#define     __IO    volatile

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.