001
25.02.2013, 05:02 Uhr
Hans
Library Walker (Operator)
|
Hi,
ich hoffe mal, ihr habt in der Schule eine Entwicklungsumgebung mit einem Simulator für den Controller. Dann kannst Du das Programm nämlich darin schon mal testen, bevor Du es auf den Controller überträgst. Ansonsten würde ich Dir raten, Dir das Programm mal anzusehen, nachdem der Präprozessor es bearbeitet hat. Der macht ja nicht viel mehr, als die #include-Dateien einzubinden und die Makros zu ersetzen. Aber gerade bei Makros schleichen sich oft Probleme ein, die man nicht sofort sieht. So sieht Deine erste Zeile
C++: |
if(S1==1 && S2==1 && S3==1 && S4==1 && S5==1 && S6==1 && S7==1 && S8==1 && S9==1 && S10==1)
|
nachdem sie vom Präprozessor bearbeitet wurde etwa so aus:
C++: |
if((LPC_GPIO0->FIOPIN>>18)&1 ==1 && (LPC_GPIO0->FIOPIN>>17)&1==1 && (LPC_GPIO0->FIOPIN>>23)&1==1 && (LPC_GPIO0->FIOPIN>>24)&1==1 && (LPC_GPIO0->FIOPIN>>25)&1==1 && (LPC_GPIO0->FIOPIN>>26)&1==1 && (LPC_GPIO1->FIOPIN>>30)&1==1 && (LPC_GPIO1->FIOPIN>>31)&1==1 && (LPC_GPIO2->FIOPIN>>7)&1==1 && (LPC_GPIO2->FIOPIN>>8)& ==1 )
|
Hab das der besseren lesbarkeit wegen mal auf mehrere Zeilen verteilt. Und das ist auch nur eine Annahme, da ich nicht weis, was in den Dateien "LPC17xx.h", <cr_section_macros.h> und <NXP/crp.h> drin steht und was deshalb aus LPC_GPIO0, FIOPIN, etc. wird.
Was mir dann aber auffiel: in diesen Zeilen:
C++: |
#define S10 (LPC_GPIO2->FIOPIN>>8)& // <-- Fehler #define S14 (LPC_GPIO0->FIOPIN>>28)&) // <-- Fehler
|
fehlt eine Zahl am Ende, also ein Operand, (S10) bzw. die schliessende Klammer ist falsch (S14).
Sonst kann ich da erst mal keine Fehler finden, weil ich mit den Controllern noch nicht gearbeitet habe, also keine Details darüber weis.
Hans -- Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung. |