Content originally posted in LPCWare by Daniel Widyanto on Mon Mar 25 20:32:36 MST 2013
It's used in Keil to save the current settings of the compiler's pragma, so 'anonymous union' will not kick a warning / error. I don't have EWARM compiler in my PC, but I suppose if you can compile without error (or warning) on the 'anonymous union' parts, then you can just ignore it.
NXP is looking at it, and will fix it in the next release.
Sample of 'anonymous union':
<code>
typedef struct { /*!< (@ 0x40006000) USB0 Structure */
__I uint32_t RESERVED0[64];
__I uint32_t CAPLENGTH; /*!< (@ 0x40006100) Capability register length */
__I uint32_t HCSPARAMS; /*!< (@ 0x40006104) Host controller structural parameters */
__I uint32_t HCCPARAMS; /*!< (@ 0x40006108) Host controller capability parameters */
__I uint32_t RESERVED1[5];
__I uint32_t DCIVERSION; /*!< (@ 0x40006120) Device interface version number */
__I uint32_t RESERVED2[7];
union {
__IO uint32_t USBCMD_H; /*!< (@ 0x40006140) USB command (host mode) */
__IO uint32_t USBCMD_D; /*!< (@ 0x40006140) USB command (device mode) */
} ;
union {
__IO uint32_t USBSTS_H; /*!< (@ 0x40006144) USB status (host mode) */
__IO uint32_t USBSTS_D; /*!< (@ 0x40006144) USB status (device mode) */
} ;
union {
__IO uint32_t USBINTR_H; /*!< (@ 0x40006148) USB interrupt enable (host mode) */
__IO uint32_t USBINTR_D; /*!< (@ 0x40006148) USB interrupt enable (device mode) */
} ;
union {
__IO uint32_t FRINDEX_H; /*!< (@ 0x4000614C) USB frame index (host mode) */
__IO uint32_t FRINDEX_D; /*!< (@ 0x4000614C) USB frame index (device mode) */
} ;
__I uint32_t RESERVED3;
union {
__IO uint32_t PERIODICLISTBASE; /*!< (@ 0x40006154) Frame list base address (host mode) */
__IO uint32_t DEVICEADDR; /*!< (@ 0x40006154) USB device address (device mode) */
} ;
union {
__IO uint32_t ASYNCLISTADDR; /*!< (@ 0x40006158) Address of endpoint list in memory */
__IO uint32_t ENDPOINTLISTADDR; /*!< (@ 0x40006158) Address of endpoint list in memory */
} ;
__IO uint32_t TTCTRL; /*!< (@ 0x4000615C) Asynchronous buffer status for embedded TT (host mode) */
__IO uint32_t BURSTSIZE; /*!< (@ 0x40006160) Programmable burst size */
__IO uint32_t TXFILLTUNING; /*!< (@ 0x40006164) Host transmit pre-buffer packet tuning (host mode) */
__I uint32_t RESERVED4[3];
__IO uint32_t BINTERVAL; /*!< (@ 0x40006174) Length of virtual frame */
__IO uint32_t ENDPTNAK; /*!< (@ 0x40006178) Endpoint NAK (device mode) */
__IO uint32_t ENDPTNAKEN; /*!< (@ 0x4000617C) Endpoint NAK Enable (device mode) */
__I uint32_t RESERVED5;
union {
__IO uint32_t PORTSC1_H; /*!< (@ 0x40006184) Port 1 status/control (host mode) */
__IO uint32_t PORTSC1_D; /*!< (@ 0x40006184) Port 1 status/control (device mode) */
} ;
__I uint32_t RESERVED6[7];
__IO uint32_t OTGSC; /*!< (@ 0x400061A4) OTG status and control */
union {
__IO uint32_t USBMODE_H; /*!< (@ 0x400061A8) USB mode (host mode) */
__IO uint32_t USBMODE_D; /*!< (@ 0x400061A8) USB device mode (device mode) */
} ;
__IO uint32_t ENDPTSETUPSTAT; /*!< (@ 0x400061AC) Endpoint setup status */
__IO uint32_t ENDPTPRIME; /*!< (@ 0x400061B0) Endpoint initialization */
__IO uint32_t ENDPTFLUSH; /*!< (@ 0x400061B4) Endpoint de-initialization */
__I uint32_t ENDPTSTAT; /*!< (@ 0x400061B8) Endpoint status */
__IO uint32_t ENDPTCOMPLETE; /*!< (@ 0x400061BC) Endpoint complete */
__IO uint32_t ENDPTCTRL0; /*!< (@ 0x400061C0) Endpoint control 0 */
__IO uint32_t ENDPTCTRL1; /*!< (@ 0x400061C4) Endpoint control */
__IO uint32_t ENDPTCTRL2; /*!< (@ 0x400061C8) Endpoint control */
__IO uint32_t ENDPTCTRL3; /*!< (@ 0x400061CC) Endpoint control */
__IO uint32_t ENDPTCTRL4; /*!< (@ 0x400061D0) Endpoint control */
__IO uint32_t ENDPTCTRL5; /*!< (@ 0x400061D4) Endpoint control */
} LPC_USB0_Type;
</code>