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?