【发布时间】:2013-07-09 22:40:15
【问题描述】:
我正在尝试以一种简单的方式来定义我的 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 调用它,我会收到一个错误,因为编译器不接受我的参数值而是字符串本身。
如何处理?
【问题讨论】:
标签: c hash macros c-preprocessor