在MSP430世界中,驱动器芯片具有使用GPIO引脚的功能:
GPIO_SetAsInputPin(port, pin)
我想要一个宏来定义一个引脚,例如:
#define PB1 (GPIO_PORT_P2, GPIO_PIN4)
#define PB2 (GPIO_PORT_P2, GPIO_PIN5)
当我用宏调用该函数时:
GPIO_setAsInputPin(PB1);
我在函数调用错误中得到的参数太少了。是否有不同的方法使这项工作?
答案 0 :(得分:3)
PB1扩展的括号使它成为一个参数,中间有一个逗号运算符 - 所以你的调用扩展为:
GPIO_setAsInputPin((GPIO_PORT_P2, GPIO_PIN4))
您应该使用:
#define PB1 (GPIO_PORT_P2), (GPIO_PIN4)
扩展为:
GPIO_setAsInputPin((GPIO_PORT_P2), (GPIO_PIN4))
给你两个参数。或者你可以省略名字周围的括号,你可能是安全的。
如果GPIO_setAsInputPin
本身是一个需要两个参数的宏,那么您可能仍会遇到问题。然后你需要像:
#define GPIO_setAsInputPin_1(x) GPIO_setAsInputPin(x)
你会调用:
GPIO_setAsInputPin_1(PB1);
你得到输出:
GPIO_setAsInputPin((GPIO_PORT_P2), (GPIO_PIN4));
或基础宏扩展到的任何内容。