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.
Lesezeichen