首页
学习
活动
专区
圈层
工具
发布

C循环GPIO
EN

Stack Overflow用户
提问于 2016-09-23 14:54:07
回答 1查看 439关注 0票数 0

我有一个LPC板,我需要迭代通过引脚,并检查他们是高还是低,当我连接他们与一些LED/电线。我发现的问题是,引脚没有按特定的顺序排列。我有20个输入的GPIOs和20个输出。

我已经将引脚定义为宏表达式。#define GPIO1 0,1 #define GPIO2 1,19,然后我将它们存储在数组中,例如。gpio_outputs[] = {GPIO1, etc};,但是如果我试图对这个数组执行一个for循环,它会告诉我“参数太少了”。

代码语言:javascript
复制
for (i=0;i<sizeof(gpio_outputs);i++){
//  Chip_GPIO_SetPinDIROutput(LPC_GPIO_PORT, gpio_outputs[i]);
//}

Chip_GPIO_SetPinDIROutput的原型是:

代码语言:javascript
复制
Chip_GPIO_SetPinDIROutput(LPC_GPIO_PORT, PIN_INDEX, PIN_NUMBER);

现在,从我所读到的情况来看,宏表达式不适用于此。因此,我的问题是,如何迭代每个GPIO,而不必手动完成对所有40个?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-23 14:59:48

代码语言:javascript
复制
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);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39663789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档