Schritt 8: Flüchtige Variablen
Ich habe davor weil ich nicht versuchen, Ausgänge direkt in meine Interrupts, bearbeiten wir die LEDstate Variable verwenden, um unsere LED indirekt zu manipulieren. Dies erfordert eine ganz besondere Variable namens "volatile"-Variable.
MPIDE hat Code-Optimierer, die Ihre Mikrocontroller-Funktion, schneller und reibungsloser helfen. Eines der Dinge, die diese Optimierer tun werden ist Variablen, die nicht zu ändern und machen sie in konstanten, spart Platz im Speicher. Leider, unsere LEDstate-Variable in der Hauptschleife und die Funktion nicht verwendet wird, ist verwenden, da (LEDchange()) wird nicht in der Hauptschleife genannt, diese Optimierer sehen LEDstate als Variable, die nicht zu ändern, und schalten Sie ihn in eine konstante, die Probleme verursacht, wenn unsere Interrupt versucht, es zu ändern.
Nun, wir wissen, dass LEDstate ist keine konstante, aber unser Code nicht. Zum Glück können wir sagen, unsere Optimierer, dass LEDstate ist keine konstante, und wir tun, indem man es in eine "flüchtige" Variable.
Man könnte dann denken, dass Sie alle sollten Ihre Variablen flüchtig, um sicherzustellen, dass Ihre Optimierer versehentlich machen wird nicht konstanten wenn sollte es nicht, aber das wäre eine schlechte Idee.
Wegen wie flüchtige Variablen gespeichert werden im Speicher, sie sind ein wenig langsamer als normale Variablen reagieren. Das bedeutet, dass wenn Sie Ihre Variablen häufig aufrufen, sie Ihren Code erheblich verlangsamen könnte. Zum Glück, da die meisten unserer Anwendungen Interrupt aufgerufen werden so selten dies nicht am Ende, ein Problem, aber es bedeutet, dass Sie nur in Interrupts flüchtigen verwendeten Variablen machen möchten.