Bonjour a tous!
Tout d'abord merci de me repondre si vous le faite.
Alors voila mon probleme (je vais essayer d'etre le plus clair possible), je sais bien ce qu'est un #include mais le reste me parait quelque peu mysterieux.
D'apres ce que j'ai compris il sagit des definitions des adresse des registre du µC mais je sui scurieux de savoir ce que fait au final la derniere ligne
pouvez vous m'expliquer par ordre cronologique ce qui se passe svp?
Code : Sélectionner tout - Visualiser dans une fenêtre à part BASE_PIO_LED->PIO_OER = (LED_A | LED_B);
Je dois aussi avouer que je ne saisi pas non plus ces lignes
Pour les AT91 CAST et REG * et les 0x... je ne m'y retrouve plus pourriez vous me dire ce qui se passe pour chacune des variables. (je sais tout de meme que le 0x... est un nombre hexa mais avec les * reg parentheses etc je ne m'y retrouve pas, en fait un define tout simple je comprend bien mais des tortueux comme ceux que je vous propose je suis perdu)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 #define PIO_OER (AT91_CAST(AT91_REG *) 0x00000010) #define AT91C_BASE_PIOA (AT91_CAST(AT91PS_PIO) 0xFFFFF400)
Pour cette ligne il me faudrai juste la confirmation que la variable vaut 1 décalé de 0 donc 1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part #define AT91C_PIO_PA0 (1 << 0)
/**Dans fichier AT91SAM7S64.h**/
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 #ifndef __ASSEMBLY__ typedef volatile unsigned int AT91_REG;// Hardware register definition #define AT91_CAST(a) (a) #else #define AT91_CAST(a) #endif #ifndef __ASSEMBLY__ typedef struct _AT91S_PIO { ... ... ... AT91_REG PIO_OER; // Output Enable Register ... ... } AT91S_PIO, *AT91PS_PIO; #else #define ... #define ... #define ... #define PIO_OER (AT91_CAST(AT91_REG *) 0x00000010) // (PIO_OER) Output Enable Register #define ... #define ... #endif #define AT91C_PIOA_PER (AT91_CAST(AT91_REG *) 0xFFFFF400) //(PIOA) PIO Enable Register #define AT91C_PIO_PA0 (1 << 0) //Pin Controlled by PA0 #define AT91C_PIO_PA1 (1 << 1) //Pin Controlled by PA1 #define AT91C_BASE_PIOA (AT91_CAST(AT91PS_PIO) 0xFFFFF400) //(PIOA) Base Address
/**Dans fichier AT91SAM7S-EK.h**/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 #include "AT91SAM7S64.h" #define AT91B_LED1 AT91C_PIO_PA0 #define AT91B_LED2 AT91C_PIO_PA1 #define AT91D_BASE_PIO_LED AT91C_BASE_PIOA
/**Dans fichier main.c**/
Merci beaucoup à tous.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #include "AT91SAM7S-EK.h" #include "AT91SAM7S64.h" #define LED_A AT91B_LED1 #define LED_B AT91B_LED2 #define BASE_PIO_LED AT91D_BASE_PIO_LED BASE_PIO_LED->PIO_OER = (LED_A | LED_B);
Tibo
Partager