赞
踩
管道是先进先出的数据结构,相当于一个缓冲区;
数据长度一般是1Byte,这里设置管道缓冲区为512Byte;
有时候需要一定长度的数据,不仅仅是1Byte;
》使用两个指针分别指向缓冲区的首地址和尾地址,例如begin,end
—》要实现随时找到管道中任意一个成员,使用两个指针分别指向第一个成员(head)和最后一个成员(tail)
—》使用环形缓冲区存储数据
以下程序的管道 = 管道结构体+缓冲区;
//定义一个管道结构体 typedef struct _Pipe_t { uint8_t * beginPtr; //管道内存块首地址 uint8_t * headPtr; //管道元素首部,指向下一个要存储的地址 uint8_t * tailPtr; //管道元素尾部,指向下一个要读取的地址 uint8_t * endPtr; //管道内存块尾部 ,最后一个内存地址+1 } Pipe_t; //初始化管道,申请缓冲区 //参数1:结构体指针 //参数2:缓冲区(数组)首地址 //参数3:缓冲区大小 //示例:pipe_init(&TLSR8266_pipe, (uint8_t *)Usart3_buff,USART3_BUFF_SIZE); void pipe_init(Pipe_t *pipe, uint8_t * buffer, uint16_t size) { (*pipe).be
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。