This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

struct & union definations

I am using struct in my code. with LPC1317.

Now if I write:

typedef struct
{
   uint32_t f;

    union
    {
        uint32_t ADR[3];
        struct
        {
            uint32_t ADR1;
            uint32_t ADR2;
            uint32_t ADR3;
        };                            // warning : #40-D expected an identifier
    };                                // warning : #40-D expected an identifier

} j;

It generated a warninga s mentioned above. I know it can be solved my naming them.

But in header file of LPC13Uxx.h, this has been done & it don't generate warning.& elements can be accessed also. Below is how its is done in lPc13uxx.h

typedef struct {                            /*!< (@ 0x50000000) GPIO_PORT Structure    */
  union {
    struct {
      __IO uint8_t B0[32];                  /*!< (@ 0x50000000) Byte pin registers port 0; pins PIO0_0 to PIO0_31 */
      __IO uint8_t B1[32];                  /*!< (@ 0x50000020) Byte pin registers port 1 */
    };
    __IO uint8_t B[64];                     /*!< (@ 0x50000000) Byte pin registers port 0/1 */
  };
  __I  uint32_t RESERVED0[1008];   
  union {
    struct {
      __IO uint32_t W0[32];                 /*!< (@ 0x50001000) Word pin registers port 0 */
      __IO uint32_t W1[32];                 /*!< (@ 0x50001080) Word pin registers port 1 */
    };
    __IO uint32_t W[64];                    /*!< (@ 0x50001000) Word pin registers port 0/1 */
  };  
  __I  uint32_t RESERVED1[960];
  __IO uint32_t DIR[2];                     /*!< (@ 0x50002000) Direction registers port 0/1 */
  __I  uint32_t RESERVED2[30];
  __IO uint32_t MASK[2];                    /*!< (@ 0x50002080) Mask register port 0/1 */
  __I  uint32_t RESERVED3[30];
  __IO uint32_t PIN[2];                     /*!< (@ 0x50002100) Portpin register port 0 */
  __I  uint32_t RESERVED4[30];
  __IO uint32_t MPIN[2];                    /*!< (@ 0x50002180) Masked port register port 0/1 */
  __I  uint32_t RESERVED5[30];
  __IO uint32_t SET[2];                     /*!< (@ 0x50002200) Write: Set register for port 0/1 Read: output bits for port 0/1 */
  __I  uint32_t RESERVED6[30];
  __O  uint32_t CLR[2];                     /*!< (@ 0x50002280) Clear port 0/1         */
  __I  uint32_t RESERVED7[30];
  __O  uint32_t NOT[2];                     /*!< (@ 0x50002300) Toggle port 0/1        */
} LPC_GPIO_Type;

0