M. G. schrieb:
> Danke für die Hinweise!
> GPIOA->BSRR = (1<<4); // set bit
> GPIOA->BSRR = ~(1<<4); // clear bit
>
> Jetzt toggelt der Pin alle 250ns :-)
Die untere Zeile ist nicht ganz sauber. Über das "Bit Set Reset
Register" werden die Bits gesetzt bzw. zurückgesetzt, deren
entsprechendes Bit du im Register setzt. Die untern 16-bit setzen die
Pins, die oberen 16-bit setzen sie zurück.
M. G. schrieb:
> GPIOA->BSRR = (1<<4); // set bit
Setzt Pin4 auf high.
M. G. schrieb:
> GPIOA->BSRR = ~(1<<4); // clear bit
Setzt für alle Pins das Set und Reset Bit gleichzeitig, ausser für Pin
4, für diesen wird nur Reset getzt (deshalb funktioniert es auch).
Richtig wäre ...
> GPIOA->BSRR = (1<< (4 + 16) ); // clear bit
Oder eben gleich über das BRR (Bit Reset Register) gehen.