Für Testzwecke (Bitte Bitte keine Vorschläge wie es besser ginge...) brauche ich die allseits bekannte Delay(ms) Routine für einen STM32, den ich mit der Keil-evalversion programmiere. Wie verhindere ich dort, das der Compiler die Warteschleife wegoptimiert?
Genauso wie anderswo auch: Zähler "volatile" deklarieren. Allerdings wird diese Schleife im RAM ein anderes Tempo entwickeln als im ROM, je nach Optimierung und Waitstates mal schneller mal langsamer sein, ...
Der Systick bietet sich jedenfalls an. Ich habe auf ARM7 und CM3 für kurze Delayloops eine andere Variante realisiert: eine Schleife, die beim Start ihre Laufzeit anhand des Systick (oder anderer Referenz) misst und sich so selbst kalibriert. Hat den Vorteil, dass danach keinerlei Timer mehr verbraten wird, was insbesondere beim ARM7 wesentlich war.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.