Bonjour tout le monde :
J'ai actuellement un souci,et je compte sur votre expertise pour pouvoir le résoudre :
J'ai un programme C ,avec des fichier .c et .h
J'ai déclaré une varibale globale : extern uint32_t STATUS;
et j'ai mis un # include du fichier dans le quel se trouve cette déclaration.
Ensuite dans main.c avant le "int main()",j'initialise cette variable ,donc j'estime qu'elle est allouée d'une façon statique.
Deux fonction dans d'autre fichiers utilisent cette variable globale pour la mettre à jour : ,et j'appelle une de ces fonction dans mon programme main.
Voila quelque bout de code :
Voilà LA deuxieme fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 int32_t write_spi_8(unsigned char data) { uint32_t status; uint32_t commande_spi; commande_spi=(0x80000010+ (data<<8)); ////lecture du status if(((*adr_status) & mask_status)==0x0 ) // est ce que je suis en wait?? { *adr_decoder=commande_spi; //commande spi //ici retour de status status=*adr_status; } while(((*adr_status) & mask_status)!=mask_status) // { } *adr_decoder=0x00000000; // passe en wait alors ,et le status se remettra à '0' return status; }
et voila le programme main :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 uint32_t FASTSPI_STROBE(unsigned char strobe) {uint32_t status=0; CS_low(); //CC2420_SetReg(strobe,0x0000); // a simple write status=write_spi_8(strobe); CS_high(); return status; }
Vous pouvez remarquer que les fonction intermédiaires utilisent des variables locales dont la valeur est retournée afin que dans le main la variable globale STATUS puisse récupérer cette valeur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 while(1) { //commande oscillator do { STATUS=FASTSPI_STROBE(SXOSCON); }while(STATUS!=0x80004010); //read status //lire_status(&status); }
Le problème alors est le suivant : dans ma variable globale STATUS : j'ai toujours un 0!!Alors que je dois obtenir la valeur que j'attend !!
Merci pour votre compréhension![]()
Partager