IO を定義する簡単な方法を作ろうとしています。マクロでこれを実行しようとしていますが、この問題を解決できません。
これは私がしました:
// Buzzer PORT and PIN mapping
#define BUZZER_PORT B // PORT
#define BUZZER_PIN 2 // PCR pin
#define BUZZER_ALT 1 // Pin alternativne function
#define INIT_BUZZER(PORTX, PIN, ALT) { PORT##PORTX##_PCR(PIN) = PORT_PCR_MUX((ALT)) | PORT_PCR_DSE_MASK; GPIO##PORTX##_PDDR |= PIN<<1; }
関数呼び出し作業:
INIT_BUZZER(B, BUZZER_PIN, BUZZER_ALT);
関数呼び出しが必要です:
INIT_BUZZER(BUZZER_PORT, BUZZER_PIN, BUZZER_ALT);
ポート引数 BUZZER_PORT を指定して呼び出すと、コンパイラは引数値ではなく文字列自体を受け取るため、エラーが発生します。
これに対処する方法は?