Yahoo Groups archive

Lpc2000

Index last updated: 2026-04-28 23:31 UTC

Message

RE: [lpc2000] Re: Bit set/clear w/ gcc

2006-01-12 by Joel Winarske

> I was looking for something that would let me do:
> 
> if(LED1)
>   LED2 = 1;
> 
> This would require associating LED1 and LED2 with a particular bit in
> the appropriate IOPIN register.  Judging from your response, this is
> not possible with GCC and ARM?

If you're ok with bit fields, try this (it works in IAR, should work in
GCC):

struct PORT  {
     unsigned bit0:1;
     unsigned bit1:1;
     unsigned bit2:1;
     unsigned bit3:1;
     unsigned bit4:1;
     unsigned bit5:1;
     unsigned bit6:1;
     unsigned bit7:1;
     unsigned bit8:1;
     unsigned bit9:1;
     unsigned bit10:1;
     unsigned bit11:1;
     unsigned bit12:1;
     unsigned bit13:1;
     unsigned bit14:1;
     unsigned bit15:1;
     unsigned bit16:1;
     unsigned bit17:1;
     unsigned bit18:1;
     unsigned bit19:1;
     unsigned bit20:1;
     unsigned bit21:1;
     unsigned bit22:1;
     unsigned bit23:1;
     unsigned bit24:1;
     unsigned bit25:1;
     unsigned bit26:1;
     unsigned bit27:1;
     unsigned bit28:1;
     unsigned bit29:1;
     unsigned bit30:1;
     unsigned bit31:1;
};

volatile struct PORT *port0_reg = ((volatile struct PORT *) FIO_BASE_ADDR);

#define LED1 (port0_reg->bit13)
#define LED2 (port0_reg->bit12)

if(LED1)
	LED2 = 1;


Joel

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.