【发布时间】:2018-12-18 20:43:16
【问题描述】:
我有一些微控制器代码使用一些头文件,其中 GPIO 引脚定义如下:
#define PA3 GPIO(GPIO_PORTA, 3)
使用 IDE,我可以导航到 GPIO 的实现,我发现:
#define GPIO(port, pin) ((((port)&0x7u) << 5) + ((pin)&0x1Fu))
其中pin定义为:
const uint8_t pin
而port 是一个enum,定义为:
enum gpio_port { GPIO_PORTA, GPIO_PORTB, GPIO_PORTC, GPIO_PORTD, GPIO_PORTE }
我想创建一个包含所有 GPIO 定义(PA3、PA4 等)的数组,这些定义可以通过串行端口传递的整数进行索引。
我尝试了以下方法:
GPIO knavePinList[] = {PA3, PA4, PA21, PB4, PHY_RESET_PIN, PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9};
但这显然不起作用,因为GPIO 不是公认的 C 类型,实际上是宏。在尝试构建时,我收到以下错误消息:
unknown type name 'GPIO'
我什至可以声明一个宏数组吗?如果是这样,我将如何记录我正在使用的类型?
谢谢。
【问题讨论】:
标签: c arrays c-preprocessor