【发布时间】:2016-08-28 02:47:13
【问题描述】:
我需要一点帮助。我想将数组中的元素向上移动一个元素,以便新位置 1 包含位置 1 的旧值,new-2 包含 old-1,依此类推。旧的最后一个值被丢弃,第一个位置的新值是我每秒给的一个新值。
我使用大小为 10 的数组:
uint32_t TEST[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
我使用的代码必须每秒执行一次。
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
/* Code for shifting the elements */
for (int i = 0; i < 9; i++)
{
TEST[i+1] = TEST[i];
}
TEST[0] = HAL_ADC_GetValue(&hadc);
}
【问题讨论】:
-
i < 10-->i < 9 -
一个。不知道你问的是什么问题。湾。您需要将 for 循环和限制更改为
i < 9,因为 9 + 1 超出了 TEST 的定义。 -
作为一个小提示,使用环形缓冲区可能更好。这样可以节省大量的复制指令。 @BLUEPIXY 是的,这应该是解决方案
-
你有什么问题?
-
您需要从 9 循环到 1 (含)。你的循环是用第一个元素覆盖每个元素。