Указатель глобальной переменной на массив в Sourceboost C - PullRequest
0 голосов
/ 07 октября 2011

Я объявил эти глобальные переменные:

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

Внутри функции прерывания PIC Microchip указатель считывает регистр 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 голосов
/ 07 октября 2011

Возможно, вы захотите реализовать циклический буфер без блокировки для передачи данных между ISR и main ():
Круговой буфер без блокировки
Алгоритм неблокирования

...