我有两个数组。我在 main 内部调用一个函数,在该函数中我根据另一个数组中的一些值更新其中一个数组。
volatile float32_t raw_data[3]; //this is being updated by an interrupt handler
void get_acc(int32_t* acc_data, float32_t* raw_data)
{
acc_data[0] = (raw_data[0] - OFFSETX)/SENSX; //OFFSETX and SENSX defined as a macro
acc_data[1] = (raw_data[1] - OFFSETY)/SENSY;
acc_data[2] = (raw_data[2] - OFFSETZ)/SENSZ;
}
int main()
{
int32_t acc_data[3];
int32_t data_ready = 0; //being updated by interrupt handler
while(1)
{
if(data_ready)
get_acc(acc_data,raw_data);
}
}
令我震惊的是,当我使用断点观察变量并单步执行 get_acc 时,只有第一个 acc_data[0] 得到更新,所有其他变量都设置为 0,即使它们已执行。现在我的第一个怀疑是它与指针有关,可能是地址没有正确更新。因为我已经使用传递数组来像我在 for 循环中更新数组索引一样运行,而不是手动。任何人都可以提供见解可能是错误的。