J'ai deux tableaux. Et j'appelle une fonction à l'intérieur de main dans laquelle je suis en train de mettre à jour l'un des tableaux en fonction de certaines des valeurs de l'autre tableau.Comment passer un pointeur de tableau à une fonction?
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);
}
}
Pour mon choc absolu, quand je regarde les variables en utilisant points d'arrêt et pas à pas dans get_acc, seul le premier acc_data [0] est mis à jour, tous les autres sont mis à 0, même si elles sont exécutées. Maintenant, ma première suspicion est que c'est quelque chose lié au pointeur, probablement l'adresse n'est pas mise à jour correctement. Parce que j'ai utilisé des tableaux de passage pour fonctionner comme ça où j'ai mis à jour les index de tableau dans une boucle for, pas manuellement. Quelqu'un peut-il donner un aperçu de ce qui pourrait être faux.
Est-ce que raw_data est défini globalement? Si le pointeur raw_data n'est pas requis –