私の 8 ビットの Freescale HCS08 micro では、ポインタに値を返すライブラリ関数を呼び出すたびにそれを渡しますが、実際にはそうしたくないので、NULL を入れました。
UART_SendBlock((char *)txstr, strlen(txstr), NULL);
最後の引数の型は であり、 uint16_t *
実際に送信された文字数を返します。この値は気にしません。
ただし、その関数が呼び出されるたびにマイクロのポート A がホースで接続されるという問題があり、デバッグすると、その引数が問題を引き起こしていることがわかりました。ポート A の構成レジスタは、アドレス 0x0000 と 0x0001 に存在します。これはNULL
(aka (void *)0
) が指す場所です。NULL
実際には何もしない魔法のようなものだと思っていましたが、そうではないようです。
私の回避策は本当にハックだと感じます:
#define MNUL (void *)(&mynull)
uint32_t mynull;
より良い解決策はありますか?プロセッサの未使用のメモリ セグメントに MNUL を定義しようとしましたが、すぐにリセットされます。