Hallo,
ich habe einen vermeintlichen Fehler in meinem C Programm (CoIDE) unter
einem STM32F405 gefunden, der sich aber nicht auswirkt. Jetzt ist die
Frage, ob evtl. an der DSP-Fähigkeit des Controllers liegt und sich
daher alles noch normal verhält.
Normalerweise würde ich hier
1 | uint32_t MSDelayCounter = 0;
|
2 | /* Wartezeit */
|
3 | if ( MSDelayCounter-- );
|
erwarten, dass die Variable MSDelayCounter einen Underflow hat, sodass
sie wieder bei 2^32 - 1 anfängt, wenn sie auf 0 steht.
Tut sie aber nicht. Auf einem AVR führt dieser Code zu einem Underflow,
auf dem STM32F4xx unter GCC nicht.
Auf einem AVR ist folgendes nötig:
1 | uint32_t MSDelayCounter = 0;
|
2 | /* Wartezeit */
|
3 | if ( MSDelayCounter ) MSDelayCounter--;
|
Liegt das nun am DSP der Controllers?
Ingo