初级会员
- 积分
- 100
- 金钱
- 100
- 注册时间
- 2019-7-4
- 在线时间
- 38 小时
|
2金钱
51822串口程序中有一段接收数据缓冲区的程序,大致是定义一个数据缓冲区,当前写入数据位置HEAD,待读取数据置位TAIL 利用数组构成数据队列。有几点不明白,请大神指点:1、nhead 这个变量含义是什么?是下一个写入位置吗?
2、最下面rxq[head++] = NRF_UART0->RXD; if (head >= Q_LENGTH) head = 0; 那么缓冲区最后一个字节是肯定用不到的,是因为数组从0算的,要保证数据区长度所以删除掉1个字节?
3、这个函数HEAD变量表示是当前要写入位置。如果写入快于读取时, head<tail值。为什么是if (nhead == tail) 才开始表示数据溢出,丢弃数据??nhead是下一个写入位置啊,那就是说head和tail之间保持了1个字节 的缓冲?为什么要这样做呢?如果读取快于写入呢,head>tail值时,如何判断我读取的数据是更新过的数据呢?
|
|