int a [100], i; void setup () {Serial.begin (9600);} void loop () {for (i = 0; i<100; i ++) {a [i] = i; Serial.println (a [i]); } exit (0);}
int a [100], i; void setup () {Serial.begin (9600);} void loop () {for (i = 0; i<100; i ++) {a [i] = i; Serial.println (a [i]); } exit (0);}
Ez azért van, mert a exit (0)
parancsot használja. Ez kikapcsolja a megszakítást és végtelen ciklusba kerül. A soros nyomtatást azonban először egy pufferbe helyezik, majd minden karaktert soronként eltávolítanak a pufferből, és a soros porton keresztül küldik el.
Ez minden rendben van, egészen a végéig, amikor
A exit () használatának soha nincs oka.
egy mikrokontrolleren - végül is hova tud "kilépni"? Nincs operációs rendszer, ahonnan kiléphetne. Tehát megteszi a következő legjobb dolgot, amely a lehető legközelebb áll a semmittevéshez.
Ehelyett, ha "le akarja állítani" a programot, használjon egy egyszerű while (1);
parancsot, amely lehetővé teszi a megszakítások kiváltását.
Alternatív megoldásként, ha valóban a exit ()
-t akarja használni, akkor először öblítse le
a sorozatot:
Serial.flush ();
Ez a funkció mindaddig blokkol, amíg az átviteli puffert a megszakítás teljesen ki nem üríti, és az utolsó bájt elhagyja az UART TX shift regiszterét.