Problem mit Keil Compiler V6

Gast #5926221
Lesenswert?
• ▲
▼
Hallo zusammen,
ich wollte gerade den "neuen" Compiler von Keil testen, dann bin ich auf 
ein Problem gestoßen. Das Programm funktioniert ohne Probleme mit der 
Compiler Version 5.
Beide auf der Optimierungsstufe -O1 und in beiden Fällen wird systick_ms 
durch die Interrupt inkrementiert.

Der Compiler baut eine unendliche Schleife ein. Woher kommt das 
Verhalten, denkt der Compiler der Rückgabewert von systick_get() wird 
sich nie ändern, deswegen ende Gelände?

Mein timer.c
1
static uint32_t systick_ms=0;
2

3
void systick_add(void)
4
{
5
    systick_ms++;
6
}    
7

8
uint32_t systick_get(void)
9
{
10
    return systick_ms;
11
}    
12

13
void systick_delay_ms(uint32_t delay_ms)
14
{
15
    delay_ms += systick_get();    
16
    while(delay_ms>systick_get());
17
}

timer.h
1
#ifndef TIMER_H
2
#define TIMER_H
3

4

5
#include <stdint.h>
6
#include "stm32f10x.h"
7

8
// Systick
9
void systick_add(void);
10
uint32_t systick_get(void);
11
void systick_delay_ms(uint32_t delay_ms);
12
void systick_CMD(uint8_t enable_disable);
13
    
14
#endif




stm32f10x_it.c
1
#include "timer.h"
2

3
void SysTick_Handler(void)
4
{
5
    systick_add();
6
}

Läuft auf dem STM32f103C8
Keil uVision 5.28
Compiler V5.06 update 6 und V6.12
Angehängte Dateien:

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.