完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
rt_ringbuffer_put_force函数,向buffer中put数据的策略为: 1)如果数据长度length > buffer_size,就将数据截断,只留后面的buffer_size长度的数据,从下面代码可以看出来:
2)space_length为空闲区长度,如果length > space_length,就将buffer中老的数据覆盖掉。 的确,rt_ringbuffer_put_force是按照上面两条策略在put数据,但是代码到下面这几行,存在问题了: 这里是一条华丽的分界线
这里是length >= buffer_size - write_index的情况,不然前面的代码直接return了。针对这种情况:
write_index < read_index,这种情况下,空闲区域在缓冲区中间,有数据的区域在缓冲区两头,这种情况下,read_index和write_index都会溢出,因此有: read_mirror = ~read_mirror 情况1 read_index < write_index,这种情况,有数据区域在缓冲区中间,缓冲区两头是空闲的,这个时候,write_index一定会溢出,但是read_index却不会溢出(因为前面限定了length最大不会超过buffer_size),这种情况下,read_mirror不变。 附一张截图,供大家理解我的意思: 所以我认为应该这样改:
大家认为呢? |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
185个成员聚集在这个小组
加入小组rtstudio是否可像keil加载ini解决虚拟串口与mcu串口通讯?
1258 浏览 0 评论
【Vision Board创客营连载体验】基于RA8D1-Vision Board的自动路径规划小车
1806 浏览 1 评论
【Vision Board创客营连载体验】基于Vision Board的垃圾分类
2182 浏览 0 评论
【Vision Board创客营连载体验】使用 Vision Board 做一个 UVC Camera
1813 浏览 0 评论
【Vision Board创客营连载体验】TinyMaix进行手写数字识别
2043 浏览 0 评论
1536浏览 5评论
在RT-Thread Studio中新建的stm32f407-atk-explorer工程运行qemu失败,是什么原因引起的?
1827浏览 3评论
为什么rt_device_read()只能读取到两个字节数据?
423浏览 3评论
连得上热点,但是ping baidu.com出现timeout,请问跟什么有关?
489浏览 3评论
500浏览 2评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-15 11:36 , Processed in 0.921673 second(s), Total 76, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3478
