0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心
发布
  • 发文章

  • 发资料

  • 发帖

  • 提问

  • 发视频

创作活动

完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>

3天内不再提示

环形缓冲区的实现原理

西西 来源:csdn 作者:野猪力量 2020-03-22 10:03 次阅读

通信程序中,经常使用环形缓冲区作为数据结构来存放通信中发送和接收的数据。环形缓冲区是一个先进先出的循环缓冲区,可以向通信程序提供对缓冲区的互斥访问。

环形缓冲区的实现原理

环形缓冲区通常有一个读指针和一个写指针。读指针指向环形缓冲区中可读的数据,写指针指向环形缓冲区中可写的缓冲区。通过移动读指针和写指针就可以实现缓冲区的数据读取和写入。在通常情况下,环形缓冲区的读用户仅仅会影响读指针,而写用户仅仅会影响写指针。如果仅仅有一个读用户和一个写用户,那么不需要添加互斥保护机制就可以保证数据的正确性。如果有多个读写用户访问环形缓冲区,那么必须添加互斥保护机制来确保多个用户互斥访问环形缓冲区。

图1、图2和图3是一个环形缓冲区的运行示意图。图1是环形缓冲区的初始状态,可以看到读指针和写指针都指向第一个缓冲区处;图2是向环形缓冲区中添加了一个数据后的情况,可以看到写指针已经移动到数据块2的位置,而读指针没有移动;图3是环形缓冲区进行了读取和添加后的状态,可以看到环形缓冲区中已经添加了两个数据,已经读取了一个数据。

  • 通信程序
    +关注

    关注

    0

    文章

    13

    浏览量

    8440
  • 数据结构
    +关注

    关注

    3

    文章

    433

    浏览量

    39644
  • 环形缓冲
    +关注

    关注

    0

    文章

    2

    浏览量

    1466
收藏 人收藏

    评论

    相关推荐

    STM32进阶之串口环形缓冲区实现

    实现整个环形缓冲区的数据读写。看图,队列头就是指向已经存储的数据,并且这个数据是待处理的。下一个CPU处理的数据
    发表于 06-08 14:03

    杰杰带你解读【机智云】环形缓冲区源码

    环形缓冲区环形队列)的同学,请看——STM32进阶之串口环形缓冲区实现好啦。多余的话不多说,看看他们的东西比我写的好在哪吧,原理都
    发表于 07-17 14:58

    MCU进阶之串口环形缓冲区实现

    实现整个环形缓冲区的数据读写。看图,队列头就是指向已经存储的数据,并且这个数据是待处理的。下一个
    发表于 08-17 13:11

    STM32串口环形缓冲区实现

    实现整个环形缓冲区的数据读写。看图,队列头就是指向已经存储的数据,并且这个数据是待处理
    发表于 10-16 11:40

    STM32串口环形缓冲区实现方法

    环形缓冲区
    发表于 12-24 07:30

    环形缓冲区简介

    环形缓冲区环形缓冲区简介  在单片机中串口通信是我们使用最频繁的,使用串口通信就会用到串口的数据接收与发送,环形缓冲区方式接收数据可以更好的保证数据丢帧率第。  在通信
    发表于 08-17 06:56

    怎么实现串口环形缓冲区

    实现串口环形缓冲区
    发表于 12-06 06:01

    请问串口DMA+环形缓冲区如何实现不定长度的数据收发?

    环形缓冲区如何实现不定长度的数据收发?
    发表于 12-08 06:13

    【复旦微电子FM33LG0xx开发板免费试用】实现环形缓冲区串口驱动

    环形缓冲区的方式实现串口的接收。过程临界段处理由于缓冲区的基本数据流是串口接收中断中写缓冲区,读接口函数读
    发表于 12-13 00:31

    STM32进阶之串口环形缓冲区实现资料下载

    环形缓冲区实现资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的电子工程师们。
    发表于 04-20 08:46 9次下载
    STM32进阶之串口<b>环形</b><b>缓冲区</b><b>实现</b>资料下载

    [嵌入式开发模块]单片机串口模块:串口+定时器+环形缓冲区 实现无串口IDLE中断接收不定长串口数据

    发表于 11-06 11:21 10次下载
    [嵌入式开发模块]单片机串口模块:串口+定时器+<b>环形</b><b>缓冲区</b> <b>实现</b>无串口IDLE中断接收不定长串口数据

    环形缓冲区实现思路

    实现上位机和单片机程序的数据交互。通信中为了实现正常的收发,一般都会有对应的发送和接收缓存来暂存通信数据。这里使用环形缓冲区的方式来设计数据收发的缓存,即缓冲区溢出后,从缓冲区数组的起始索引处重新进行数据的存储,这样可以比
    的头像 发表于 01-17 15:07 575次阅读

    下载硬声App