Taster mit Pull up Widerstand

OP #6338223
Lesenswert?

Moin Leute,

ich brauch mal eure Hilfe bitte.

Ich nutze das Board STM32F091. Ich hab ein LED 2 und ein Taster an PC13 
mit einem Pull-Up Widerstand (laut Datenblatt).

Ich möchte nun, dass die LED 2 leuchtet und wenn ich den Taster drücke, 
dass die LED 2 nicht mehr leuchtet.

Den Versuch, dass die LED 2 leuchtet wenn ich des Taster drücke klappt 
wunderbar. Hier ist mein Code.
1
#include "stm32f0xx.h"      // Device Header
2

3

4
int main(void)
5
{
6
   RCC->AHBENR |= 0x80000;  // enable GPIOC clock Bit 19 GPIOC
7
   RCC->AHBENR |= 0x20000;  // enable GPIOA clock Bit 17 GPIOA
8
  
9
  GPIOA->MODER |= 0x400;  // 0b 0000 0000 0000 0000 0000 0100 0000 0000 = Pin 5
10

11
   while(1)
12
   {
13
     if(GPIOC->IDR & 0x2000) // if PC13 is high
14
     {
15
       GPIOA->BSRR = 0x0020000;  // set PA5 low, LED OFF
16
     }
17
     else
18
     {
19
       GPIOA->BSRR = 0x20; // Set PA5 high, 0b 0010 0000, high, LED ON 
20

21
      }
22
    
23
    }
24
}
Wie gesagt, dass klappt. Nun möchte ich es einfach umgekehrt haben also 
das die LED ausgeht, wenn ich den Taster drücke. Ich hab die GPIO->BSRR 
= 0x0020000 und GPIOA->BSRR = 0x20 vertauscht. Eigentliche müsste das 
doch funktionieren. Also der Pin PC13 ist auf high wenn ich den Taster 
nicht drücke (Pull-Up-Widerstand) wenn das der Fall ist, dann LED->ON 
und wenn ich den Taster drücke, dann ziehe ich den Pin PC13 auf GND und 
die LED-> OFF.

Aber das passiert nicht. Die LED ist zwar ON aber wenn ich den Taster 
drücke dann passiert da nichts. Kann mir da jemand bitte helfen?
OP #6338237
Lesenswert?

Richard W. schrieb:
> Johannes O. schrieb:
>> Richard W. schrieb:
>>> GPIOA->BSRR = 0x0020000;  // set PA5 low, LED OFF
>>>        GPIOA->BSRR = 0x20; // Set PA5 high, 0b 0010 0000, high, LED ON
>>
>> Hier stimmt was nicht. Oben hast du nur 0x0020000 anstatt vermutlich
>> 0x00200000. (7 nibbles anstatt 8)
>> Kann das sein?
>
> Ja, dass stimmt. Ich meine natürlich 0x00200000.

Ach misst. Hab im Code eine Null weggelassen. Es klappt jetzt. Danke für 
die Hilfe.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren