Stefanus F. schrieb:
> Hast du die Funktion eventuell aus einer ISR heraus aufgerufen oder
> vorher Interrupts gesperrt? Diese Delay Funktion hängt davon ab, das der
> Systick Timer läuft und seine Interrupts bedient werden.
Ja, das ist es!
Während der Schleife sind div. Interrupts aktiv, und die haben eine
höhere Priorität als Systick, da sie keine Unterbrechung vertragen. Ich
kann nicht genau schätzen, wieviel Zeit in einem Handler verbracht wird,
aber ich denke es sind weniger als 50%.
Die error() Funktion selbst wird aus main.c aufgerufen, vor der großen
While-Schleife.
Wenn ich nun in error() die Interrupts (also nicht Systick) deaktiviere,
funktioniert alles wie es soll.
Dann ist für mich der Fall gelöst, und ich muß nur aufpassen, wenn ich
an anderen Stellen HAL_Delay verwenden möchte.
Ich vermute, bei Verwendung von Timern habe ich das gleiche Problem?