Naja,
1) bei dir wird der gesamte code nur einmal durchlaufen, dann erst wieder nach µC-reset.
Das übliche Muster für µC-Programme ist sowas wie:
2)Code:int main() { init, setup etc. //----------------------------------------------------------------------- // (der folgende Code wird dauernd durchlaufen, bis dass der Tod eintritt) //----------------------------------------------------------------------- while (1) { // check GPIO // mach dieses oder jenes } return 0; // reiner formalismus, denn da kommt er eh nie hin }
da ich deine C-Library nicht kenne, muss ich vermuten, dass diese funktion
ausschliesslich Pin_0 aus dem register liest, also steht danach drin (vermutlich)Code:read_A0 = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0);
1= nicht gedrückt
0=gedrückt
und das kannst du abfragen entweder mit
würde bei deinem Code dann insgesamt heissen:Code:if (read_A0 == 0x01) // Pin0=Bit0=1 --> nicht gedrückt if (read_A0 == 0x00) // Pin0=Bit0=0 --> gedrückt bei nur einem Bit ist das gleichbedeutend mit if (read_A0) // nicht gedrückt ( read_A0 <> 0 ) if (!read_A0) // gedrückt ( read_A0 == 0 )
verwirrt ?Code:int main (void) { uint8_t read_A0 = 0; SystemInit(); GPIO_Setup(); while (1) { read_A0 = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0); if (!read_A0) // = 0 => gedrückt { GPIOC->BSRR = GPIO_Pin_8; // LED On delayLoop(); GPIOC->BRR = GPIO_Pin_8; // LED Off delayLoop(); GPIOC->BSRR = GPIO_Pin_9; // LED On delayLoop(); GPIOC->BRR = GPIO_Pin_9; // LED Off delayLoop(); } } // while() schleife wiederholen return 0; }![]()







Zitieren

Lesezeichen