Sonja schrieb:
> ich hätte eher gedacht es müßte eher in diese Richtung
> GPIOD_ODR |= 1 << GPIOD_ODR.B3;
Wie soll das funktionieren? Angenommen, GPIOD_ODR existiert tatsächlich
(richtig wäre GPIOD->ODR). Da du darauf zuweisen kannst, ist das wohl
ein Integer-Typ. GPIOD_ODR.B3 ist also ungültige Syntax. Selbst wenn
GPIO_ODR irgendwie gleichzeitig ein struct mit Bitfeldern sein könnte,
wäre GPIOD_ODR.B3 entweder 1 oder 0. Und dann wäre 1 << GPIOD_ODR.B3
also entweder 1 oder 2. Das schaltet dann also entweder Pin 1 oder 2 an,
je nachdem ob Pin 3 gerade aus oder an ist.
Sonja schrieb:
> Da Obige ging gar nicht, falsche Parameter, nicht deklarier und . oder ;
> erwartet etc..also der völlig falsche Ansatz
GPIOD->ODR = (1 << 3);
funktioniert auf jeden Fall mit richtigen Compilern, kA was MicroC da
macht.
Sonja schrieb:
> aber mit
> GPIOD_ODR.B1 = 1;
> GPIOD_ODR.B2 = 1;
> kann man auch gut leben
Ist aber gefährlich, da dank volatile die beiden Pins nacheinander
eingeschaltet werden. Je nach Anwendung möchte man aber beide
gleichzeitig schalten.
Falk B. schrieb:
> Bitnummer ala AVR oder Bitmaske oder gar Bitfelder ala MSP430?
Beim STM32 - Bitmasken.
Marc V. schrieb:
> Was bringt dich dazu ? GPIOD_ODR |= 1 << B3;
> sollte doch gehen, oder ?
Nein, denn B3 ist bei den STM32-CMSIS-Libraries üblicherweise nicht
definiert.