Auf meinem 8-Bit Freescale HCS08 Mikro, wann immer ich eine Bibliotheksfunktion aufrufe, die Werte an Zeiger zurückgibt, die ich übergebe, und ich will sie nicht wirklich, habe ich ein NULL hineingeworfen, z.B.
UART_SendBlock((char *)txstr, strlen(txstr), NULL);
Der Typ des letzten Arguments ist uint16_t *
und gibt die Anzahl der tatsächlich gesendeten Zeichen zurück, ein Wert, der mir egal ist.
Ich hatte jedoch Probleme mit Port A auf meinem Mikrofon, der jedes Mal, wenn diese Funktion aufgerufen wurde, verstopft war, und die Fehlersuche wies mich darauf hin, dass dieses Argument die Dinge durcheinander brachte. Die Konfigurationsregister von Port A befinden sich an den Adressen 0x0000 und 0x0001, also dort, wo NULL
(alias (void *)0
) Punkte. Ich dachte NULL
irgendwie magisch war, wo es eigentlich nichts bewirken würde, aber es scheint nicht so zu sein.
Mein Workaround fühlt sich wirklich hakelig an:
#define MNUL (void *)(&mynull)
uint32_t mynull;
Gibt es eine bessere Lösung? Ich habe versucht, MNUL für ein unbenutztes Speichersegment auf meinem Prozessor zu definieren, aber das führt zu einem sofortigen Reset.