我有一个 dsPIC33 并使用 MPLAB X 对其进行编程。
我有三个文件:main.c
ADC.c
ADC.h
在 ADC.h 我做了一堆变量初始化如下:
typedef struct pinPair{
unsigned CH0:5,CH123:1,STAT:8,:2;
unsigned I:16;
unsigned V0:16;
unsigned V1:16;
unsigned V2:16;
}pinPair;
typedef pinPair PINPAIRS [5];
extern PINPAIRS pinPairs __attribute__((space(dma)));
然后在我的 main.c 文件中,我实现了 pinPairs 变量:
//Define pinPairs data buffers
PINPAIRS pinPairs __attribute__((space(dma),aligned(256)));
int main(void) {
...
}
现在在我的 ADC.c 文件中出现了令人困惑的部分,变量 pinPair 在大坝内存中的某处清楚地对齐,因为如果我这样做:
DMA0STA=__builtin_dmaoffset(pinPairs);
编译器只是做它的事情,但如果我按照我的意图去做:
DMA0STA=__builtin_dmaoffset(pinPairs[pairCounter]);
我得到错误:
error: Argument to __builtin_dmaoffset() is not the address of an object in a dma section;
但它虽然!
有谁知道这个错误是什么意思以及如何以我想要的方式使用变量?