Hallo zusammen,
um bei der Portkonfiguration des MSP430 nicht das gleiche zweimal
schreiben zu müssen, würde ich mir gerne die zugehörigen Registernamen
mit dem Präprozessor zusammenstricken. Beispiel:
UART soll auf P4.6 liegen, dazu brauche ich im CCS die Anweisung
Mittels Token Pasting kann man sich wunderbar so etwas bauen
1 | #define PMC_PORT(PORT,BIT) P ## PORT ## MAP ## BIT
|
Die Anweisung
1 | PMC_PORT(4,6) = PM_UCA1TXD;
|
löst dann auch anstandslos auf zu
Nun will ich das ganze aber parametrieren, d.h. Port und Bit über
#defines festlegen. Das geht schief, denn bei Token Pasting werden
Makros nicht aufgelöst. Ein
1 | PMC_PORT(UART_P,UART_B) = PM_UCA1TXD;
|
wird zu
1 | PUART_PMAPUART_B = PM_UCA1TXD;
|
worüber sich der Compiler natürlich dann beklagt.
Kennt jemand einen passenden Workaround?
Grüße,
Max
P.S.: Bei der (erfolglosen) Google-Recherche zum Thema bin ich auch über
den Versuch gestolpert, mittels Token Pasting ein #define
zusammenzubauen. Elegantes Verfahren - aber vom Standard leider nicht
gedeckt.