这是循环缓冲区吗?

问题描述 投票:0回答:1

我正在使用STM32CubeIDE对STM32进行编程。

正如您从我正在编写的代码中看到的,“ADC_buffer”的所有元素都被替换为下一个位置元素,除了最后一个元素..它将被从 ADC 读取的新样本填充/替换。

      // Shift the buffer and store the last ADC data
      for(int i = 0; i < BUFFER_SIZE-1; i++){
          ADC_buffer[i] = ADC_buffer[i+1];
      }
      ADC_buffer[BUFFER_SIZE-1] = ADC_Value;

1) 这是循环缓冲区的实现吗?

2) 如果答案是肯定的,我写的这三行代码和STM32CubeMX设置的循环缓冲区有什么区别? (图像只是描述性的..我没有使用 DMA)

buffer stm32
1个回答
0
投票

这是循环缓冲区的实现吗?

不。使缓冲区成为“循环”的关键特征是,从逻辑上讲,它从末尾回绕到开头。也就是说,如果写入缓冲区并到达最后一个位置,则继续在第一个位置(假设该位置是空闲的,也可能是空闲的)。如果一个人正在读书,情况也是如此。始终保持对包含有效数据的位置范围的感知,这些位置通常不从索引 0 开始。

循环缓冲区的主要优点之一是不需要在缓冲区内移动数据,这证明了额外的元数据和更复杂的实现是合理的。也就是说,正如您的代码所做的那样,在数组中向下移动数据是循环缓冲区避免的主要事情之一。

© www.soinside.com 2019 - 2024. All rights reserved.