Forum: Mikrocontroller und Digitale Elektronik Makro Abfrage


von Holger K. (holgerkraehe)


Lesenswert?

Hallo zusammen

Ich möchte folgendes in einem Makro erledigen:
1
#define HW_LED_A(state)  state == 1 ? 1: GPIO_SetBit(GPIOA, GPIO_PIN_4); 0:GPIO_Reset(GPIOA, GPIO_PIN_4);

Ist dies möglich?
Ich möchte HW_LED_A(1) oder (0) schreiben können, um die LED entweder 
ein oder auszuschalten.

Danke

von Einfachdenker (Gast)


Lesenswert?

Oh Mann, komplizierter geht's nicht?

.... ach ja, Holger hat wieder zugeschlagen ...

von Holger K. (holgerkraehe)


Lesenswert?

Einfachdenker schrieb:
> Oh Mann, komplizierter geht's nicht?
>
> .... ach ja, Holger hat wieder zugeschlagen ...

Mach mal einen konstruktiven Vorschlag!

von Jay (Gast)


Lesenswert?

Hallo,

das sieht sehr nach STM32 SPL API aus. Dort gibt es auch
1
GPIO_WriteBit(GPIOx, PIN, STATE);

Das sollte dann in etwa so aussehen:
1
#define HW_LED_A(state) GPIO_WriteBit(GPIOA, GPIO_PIN_4, state)

Alternativ auch:
1
#define HW_LED_A(state)  { if(state == 0) { GPIO_Reset(GPIOA, GPIO_PIN_4); } else { GPIO_SetBit(GPIOA, GPIO_PIN_4); } }
sollte es auch tun.

Gruss,
Jay

P.S.: Sicher, dass es GPIO_Reset() heisst und nicht eher 
GPIO_ResetBits() (ähnliches gilt für GPIO_SetBit())?

von fop (Gast)


Lesenswert?

1
#define HW_LED_A(state)  do{if(1 == state){GPIO_SetBit(GPIOA, GPIO_PIN_4);}else{GPIO_Reset(GPIOA, GPIO_PIN_4);}}while(0)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.