Hi,
hab mir grad die Examples für die LPC17xx Reihe angeschaut und bei denen
wird innerhalb eine struct eine union definiert ohne Bezeichner...
Trotzdem läuft das ganze fehlerfrei durch, wie funktioniert das oder hab
ich was wichtiges übersehen?
1 | #ifdef __cplusplus
|
2 | #define __I volatile /*!< defines 'read only' permissions */
|
3 | #else
|
4 | #define __I volatile const /*!< defines 'read only' permissions */
|
5 | #endif
|
6 | #define __O volatile /*!< defines 'write only' permissions */
|
7 | #define __IO volatile /*!< defines 'read / write' permissions */
|
8 |
|
9 | //die beispiel-struct
|
10 | typedef struct
|
11 | {
|
12 | union {
|
13 | __I uint8_t RBR;
|
14 | __O uint8_t THR;
|
15 | __IO uint8_t DLL;
|
16 | uint32_t RESERVED0;
|
17 | };
|
18 | union {
|
19 | __IO uint8_t DLM;
|
20 | __IO uint32_t IER;
|
21 | };
|
22 | union {
|
23 | __I uint32_t IIR;
|
24 | __O uint8_t FCR;
|
25 | };
|
26 | __IO uint8_t LCR;
|
27 | uint8_t RESERVED1[7];
|
28 | __I uint8_t LSR;
|
29 | uint8_t RESERVED2[7];
|
30 | __IO uint8_t SCR;
|
31 | uint8_t RESERVED3[3];
|
32 | __IO uint32_t ACR;
|
33 | __IO uint8_t ICR;
|
34 | uint8_t RESERVED4[3];
|
35 | __IO uint8_t FDR;
|
36 | uint8_t RESERVED5[7];
|
37 | __IO uint8_t TER;
|
38 | uint8_t RESERVED6[39];
|
39 | __IO uint32_t FIFOLVL;
|
40 | } LPC_UART0_TypeDef;
|
Hab es bei einem eigenen Beispiel ausprobiert, und hab überall statt __I
etc. volatile hinzugefügt - und prompt kommen die erwarteten
Fehlermeldungen (bei den unions).
"warning: expected an identifier"
Gruß
Steffen