Forum: Mikrocontroller und Digitale Elektronik STM32F103RB Code wird nicht richtig interpretiert


von RomzG (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich möchte einen Impuls erzeugen und bekomme einen komischen Zustand bei 
der While-Schleife.

in main.cpp wird durch den Timerinterrupt die Methode setStop in 
transmitter.cpp aufgerufen:

main.cpp:
extern void setStop(void);

extern void impulsCallback(ITimer &)
{
  setStop();
}

in transmitter.cpp wird dann die variable stop gestetzt.

transmitter.cpp:

void setStop(void)
{
  stop = true;
}


void performPosImpuls(void)
{
  GPIO_WriteBit(GPIOB, GPIO_Pin_10, Bit_SET);
  GPIO_WriteBit(GPIOB, GPIO_Pin_11, Bit_RESET);

  timer->start(1000, false);
  while(!stop);

  GPIO_WriteBit(GPIOB, GPIO_Pin_10, Bit_RESET);
  GPIO_WriteBit(GPIOB, GPIO_Pin_11, Bit_RESET);

  stop = false;
}

Nun ist es so, dass der Controller bei der while Schleife trotz 
erfüllter Bedingung nicht weitergeht.

Ein Ausschnitt des Debuggers ist angehängt.


Vielleicht kennt jemand das Problem und kann mir weiterhelfen.

Vielen Dank im voraus

von Mr.T (Gast)


Lesenswert?

In solchen Fällen kann es hilfreich sein auf disassembly-Ebene zu 
debuggen.
Da siehst Du dann direkt was in welche Register geladen wird und was mit 
wem verglichen wird.

von RomzG (Gast)


Lesenswert?

Danke,
hat sich erledigt.
Stop wurde nach dem ersten Lesen nicht erneut gelesen, da sie nicht als 
volatile declariert war.

Danke

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.