C GPIO for 循环

C GPIO for loop

我有一个 LPC 板,当我将它们与一些 LEDs/Wire 连接时,我需要遍历引脚并检查它们是高电平还是低电平。我发现的问题是引脚没有按特定顺序排列。我有 20 个输入 GPIO 和 20 个输出。

我已经将引脚定义为宏表达式,例如。 #define GPIO1 0,1 #define GPIO2 1,19 然后我将它们存储在一个数组中,例如。 gpio_outputs[] = {GPIO1, etc}; 但如果我尝试对该数组执行 for 循环,它会告诉我 "too few arguments"

for (i=0;i<sizeof(gpio_outputs);i++){
//  Chip_GPIO_SetPinDIROutput(LPC_GPIO_PORT, gpio_outputs[i]);
//}

Chip_GPIO_SetPinDIROutput 的原型是:

Chip_GPIO_SetPinDIROutput(LPC_GPIO_PORT, PIN_INDEX, PIN_NUMBER);

现在,根据我的阅读,宏表达式不适用于此。所以我的问题是如何遍历每个 GPIO 而不必为所有 40 个手动执行?

struct GPIO_Attr { uint8_t pinIndex, pinNumber; };
struct GPIO_Attr gpio_outputs[] = { {GPIO1}, {GPIO1} }; // Extra '{}' is necessary to initialize GPIO_Attr fields
for (i=0;i<sizeof(gpio_outputs)/sizeof(gpio_outputs[0]);i++){
    Chip_GPIO_SetPinDIROutput(LPC_GPIO_PORT, gpio_outputs[i].pinIndex, gpio_outputs[i].pinNumber);
}