少し助けが必要です。私は配列の要素を一つ上にシフトしたいので、新しい位置1には位置1の古い値が含まれ、new-2にはold-1などが含まれています。古い最後の値は破棄され、最初の位置の新しい値は毎秒与える新しい値です。配列内の要素を移動する
Iは、サイズ10の配列を使用する:
uint32_t TEST[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
I、使用コードは、毎秒実行されなければなりません。
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 ' – BLUEPIXY
a。あなたが求めている質問が何であるか分かりません。 b。 9 + 1はTESTの定義を超えているため、forループとlimitを 'i <9 'に変更する必要があります。 – niry
ちょっとしたヒントとして、リングバッファを使うほうがいいかもしれません。これにより、大量のコピー指示を保存することができます。 @BLUEPIXYはいこれが解決策になるはずです – Schafwolle