全局变量指向Sourceboost C中的数组

时间:2011-10-07 12:57:35

标签: pointers embedded

我宣布了这些全局变量:

volatile unsigned char BUFFER[7]={0,0,0,0,0,0,0};//to get all data
volatile unsigned char *PTR=&BUFFER[0];//points to start address

在Microchip PIC中断功能内部,指针根据我的代码读取UART寄存器并将其与BUFFER []数组相关:

*PTR=rcreg;
PTR++;

然后检查函数main()中的数据:

for(i=0;i<3;i++){
    if(BUFFER[i]==DATA[i]){
        k++;
        if(k==2){LED_On();}
    }
}

并将ptr设置为指向BUFFER []

的起始地址
ptr=BUFFER;

问题:这是读取寄存器中数据的最佳方式和正确方法吗?如何在中断函数中使用指针?

感谢您的关注和帮助!

1 个答案:

答案 0 :(得分:0)

您可能需要考虑实现无锁循环缓冲区以在ISR和main()之间传输数据:
Circular lock-free buffer
Non-blocking algorithm