Sourceboost C 中指向数组的全局变量指针
我声明了这些全局变量:
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;
问:这是读取寄存器中数据的最佳方式和正确方式吗?如何在中断函数中使用指针?
感谢您提前的关注和帮助!
I declared these global variables:
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
Inside the Microchip PIC interrupt function, the pointer reads the UART register and deference it to BUFFER[] array according to my code:
*PTR=rcreg;
PTR++;
I then check the data in function main():
for(i=0;i<3;i++){
if(BUFFER[i]==DATA[i]){
k++;
if(k==2){LED_On();}
}
}
and set ptr to point at the start address of BUFFER[]
ptr=BUFFER;
Question: Is this the best way and correct way to read data in the register? How can I use pointer in interrupt function?
Thank you for your kind attention and help in advance!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可能需要考虑实现一个无锁循环缓冲区来在 ISR 和 main() 之间传输数据:
循环无锁缓冲区
非阻塞算法
You may want to consider implementing a lock-free circular buffer to transfer data between the ISR and main():
Circular lock-free buffer
Non-blocking algorithm