我宣布了这些全局变量:
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;
问题:这是读取寄存器中数据的最佳方式和正确方法吗?如何在中断函数中使用指针?
感谢您的关注和帮助!
答案 0 :(得分:0)
您可能需要考虑实现无锁循环缓冲区以在ISR和main()之间传输数据:
Circular lock-free buffer
Non-blocking algorithm