OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3678|回复: 1

四轴飞行器51822 串口接收数据队列问题

[复制链接]

10

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2019-7-4
在线时间
38 小时
发表于 2019-7-21 04:54:47 | 显示全部楼层 |阅读模式
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值时,如何判断我读取的数据是更新过的数据呢?




21313213.jpg
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2019-7-4
在线时间
38 小时
 楼主| 发表于 2019-7-24 23:27:14 | 显示全部楼层
原子哥在吗?没人知道吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-1-31 20:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表