我有兩個數組。我正在調用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循環中更新數組索引一樣,而不是手動。 任何人都可以提供一個洞察什麼可能是錯誤的。
是raw_data全局定義的嗎?如果是raw_data指針不是必需的 –