void setup() {
    // 1. Pins PA0 bis PA7 als Ausgänge konfigurieren
    GPIOA->MODER &= ~(0xFFFF);    // Alle MODER-Bits für PA0-PA7 löschen
    GPIOA->MODER |= 0x5555;       // PA0 bis PA7 als Ausgänge setzen (01 für jedes Pin-Paar)

    // 2. Pins PB0 bis PB7 als Eingänge konfigurieren
    GPIOB->MODER &= ~(0xFFFF);    // Alle MODER-Bits für PB0-PB7 löschen
    GPIOA->MODER |= 0x0000;       // PB0 bis PB7 als Eingänge setzen (00 für jedes Pin-Paar)

    // 3. Pull-Down für DIP-Switch konfigurieren
    GPIOB->PUPDR &= ~(0xFFFF);    // PUPDR Bits für PB0-PB7 löschen
    GPIOB->PUPDR |= 0xAAAA;       // Pull-Down für PB0 bis PB7 (10 für jedes Pin-Paar)
}

int dipSwitchState;

void loop() {
    // 4. Zustände des DIP-Switches abfragen
    dipSwitchState = GPIOB->IDR & 0xFF;  // Lesen der unteren 8 Bits von PB0-PB7

    // 5. LEDs entsprechend dem DIP-Switch-Zustand steuern
    GPIOA->ODR = (GPIOA->ODR & ~0xFF) | dipSwitchState;  // Setzen der LEDs entsprechend dem DIP-Switch

    // Alternativ mit einem Befehl
    // GPIOA->ODR = GPIOA->IDR;  // Direktes Setzen der LEDs entsprechend dem DIP-Switch
}