Mein zweites Programm. Dieses Mal wird noch der Button mit einbezogen.
Die LED wid eingeschaltet, solange der Knopf gedrückt ist.
Code:#include <stdio.h> #include <stdlib.h> #include <stm32f446xx.h> void configLed(){ RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN; //Taktversorgung Port A GPIOA->MODER |= (GPIO_MODER_MODER5_0); //A5 => Ausgang GPIOA->OTYPER &= ~(GPIO_OTYPER_OT_5); //A5 0> Push-Pull GPIOA->PUPDR &= ~(GPIO_PUPDR_PUPDR5); //A5 ohne Pullup-Pulldown } void configButton(){ RCC->AHB1ENR |= RCC_AHB1ENR_GPIOCEN; //Taktversorgung Port C GPIOC->MODER |= GPIO_MODER_MODER0_0; //C13 => Eingang GPIOC->PUPDR |= GPIO_PUPDR_PUPDR13_1; //C13 => Pulldown einschalten } void main(void) { configLed(); configButton(); printf("Einstellung fertig\n"); while(1){ if(!(GPIOC->IDR & GPIO_IDR_IDR_13)){ GPIOA->BSRR |= GPIO_BSRR_BS_5; //Ausgang A5 setzen printf("Knopf gedrückt\n"); } else{ GPIOA->BSRR |= (GPIO_BSRR_BR_5); //Ausgang A5 zurücksetzen printf("Knopf nicht gedrückt\n"); } } }
Edit:
Noch eine Frage...gibt es in C eigentlich die Möglichkeit, ein Bit direkt zu kopieren? In Pseudocode ausgedrückt:
Sodaß ich mir das If-Statement sparen könnte.Code:PA5 == PC13;
Lesezeichen