I think that there is an error in the LPC23xx.h include file that apperars in the KEIL web site:
RealView MDK 3.10 -> Supported Devices -> LPC2378 -> Header Files
The lines:
/* FIOs can be accessed through WORD, HALF-WORD or BYTE. */ #define FIO0DIR0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x01)) #define FIO1DIR0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x21)) #define FIO2DIR0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x41)) #define FIO3DIR0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x61)) #define FIO4DIR0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x81))
#define FIO0DIR1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x02)) #define FIO1DIR1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x22)) #define FIO2DIR1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x42)) #define FIO3DIR1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x62)) #define FIO4DIR1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x82))
#define FIO0DIR2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x03)) #define FIO1DIR2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x23)) #define FIO2DIR2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x43)) #define FIO3DIR2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x63)) #define FIO4DIR2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x83))
#define FIO0DIR3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x04)) #define FIO1DIR3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x24)) #define FIO2DIR3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x44)) #define FIO3DIR3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x64)) #define FIO4DIR3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x84))
must be:
/* FIOs can be accessed through WORD, HALF-WORD or BYTE. */ #define FIO0DIR0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x00)) #define FIO1DIR0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x20)) #define FIO2DIR0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x40)) #define FIO3DIR0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x60)) #define FIO4DIR0 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x80))
#define FIO0DIR1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x01)) #define FIO1DIR1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x21)) #define FIO2DIR1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x41)) #define FIO3DIR1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x61)) #define FIO4DIR1 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x81))
#define FIO0DIR2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x02)) #define FIO1DIR2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x22)) #define FIO2DIR2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x42)) #define FIO3DIR2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x62)) #define FIO4DIR2 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x82))
#define FIO0DIR3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x03)) #define FIO1DIR3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x23)) #define FIO2DIR3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x43)) #define FIO3DIR3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x63)) #define FIO4DIR3 (*(volatile unsigned char *)(FIO_BASE_ADDR + 0x83))
Best regards.
Victor Sanchez
View all questions in Keil forum