我有一个LPC板,我需要迭代通过引脚,并检查他们是高还是低,当我连接他们与一些LED/电线。我发现的问题是,引脚没有按特定的顺序排列。我有20个输入的GPIOs和20个输出。
我已经将引脚定义为宏表达式。#define GPIO1 0,1 #define GPIO2 1,19,然后我将它们存储在数组中,例如。gpio_outputs[] = {GPIO1, etc};,但是如果我试图对这个数组执行一个for循环,它会告诉我“参数太少了”。
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个?
发布于 2016-09-23 14:59:48
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);
}https://stackoverflow.com/questions/39663789
复制相似问题