Describes predefine macros for mbed online compiler (armcc)

Committer:
MACRUM
Date:
Thu Jan 12 01:44:21 2017 +0000
Revision:
4:2b25b7a2c5fd
Parent:
3:b802baa84f98
Child:
6:40e873bbc5f7
Add library detection and LED blinky

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MACRUM 0:99f7e7890e03 1 #include "mbed.h"
MACRUM 0:99f7e7890e03 2
MACRUM 4:2b25b7a2c5fd 3 #define xstr(s) str(s)
MACRUM 4:2b25b7a2c5fd 4 #define str(s) #s
MACRUM 4:2b25b7a2c5fd 5
MACRUM 4:2b25b7a2c5fd 6 #if defined(TARGET_SAMD21J18A)
MACRUM 4:2b25b7a2c5fd 7 Serial pc(PB22, PB23); // tx, rx
MACRUM 4:2b25b7a2c5fd 8 DigitalOut myled(PA17, 0);
MACRUM 4:2b25b7a2c5fd 9 #elif defined(TARGET_LPC1768)
MACRUM 4:2b25b7a2c5fd 10 #define LED1 P0_22
MACRUM 0:99f7e7890e03 11 Serial pc(USBTX, USBRX); // tx, rx
MACRUM 4:2b25b7a2c5fd 12 DigitalOut myled(P0_22, 1);
MACRUM 4:2b25b7a2c5fd 13 #else
MACRUM 4:2b25b7a2c5fd 14 Serial pc(USBTX, USBRX); // tx, rx
MACRUM 4:2b25b7a2c5fd 15 DigitalOut myled(LED1, 0);
MACRUM 4:2b25b7a2c5fd 16 #endif
MACRUM 0:99f7e7890e03 17
MACRUM 0:99f7e7890e03 18 int main() {
MACRUM 4:2b25b7a2c5fd 19 pc.printf("\n");
MACRUM 4:2b25b7a2c5fd 20 pc.printf("System Clock = %d\n", SystemCoreClock);
MACRUM 1:5d5b5bd67e5b 21 #ifdef MBED_USERNAME
MACRUM 4:2b25b7a2c5fd 22 pc.printf("mbed username: %s\n", xstr(MBED_USERNAME));
MACRUM 1:5d5b5bd67e5b 23 #endif
MACRUM 3:b802baa84f98 24 pc.printf("mbed library version: %d\n", MBED_LIBRARY_VERSION);
MACRUM 2:fe7a36257939 25 #ifdef __CC_ARM
MACRUM 4:2b25b7a2c5fd 26 #ifdef __MICROLIB
MACRUM 4:2b25b7a2c5fd 27 pc.printf("Built with ARM compiler and micro library (uARM)\n");
MACRUM 4:2b25b7a2c5fd 28 #else
MACRUM 4:2b25b7a2c5fd 29 pc.printf("Built with ARM compiler and standard library (ARM)\n");
MACRUM 4:2b25b7a2c5fd 30 #endif
MACRUM 0:99f7e7890e03 31 pc.printf("ARM Compiler version : %d\n", __ARMCC_VERSION);
MACRUM 0:99f7e7890e03 32
MACRUM 0:99f7e7890e03 33 #ifdef __ARM_NEON__
MACRUM 0:99f7e7890e03 34 pc.printf("NEON is available\n");
MACRUM 0:99f7e7890e03 35 #else
MACRUM 0:99f7e7890e03 36 pc.printf("NEON is not available\n");
MACRUM 0:99f7e7890e03 37 #endif
MACRUM 0:99f7e7890e03 38
MACRUM 0:99f7e7890e03 39 #ifdef __APCS_INTERWORK
MACRUM 0:99f7e7890e03 40 pc.printf("ARM/Thumb Interworking is used\n");
MACRUM 0:99f7e7890e03 41 #endif
MACRUM 0:99f7e7890e03 42
MACRUM 0:99f7e7890e03 43 #ifdef __APCS_ROPI
MACRUM 0:99f7e7890e03 44 pc.printf("--apcs /ropi is used\n");
MACRUM 0:99f7e7890e03 45 #endif
MACRUM 0:99f7e7890e03 46
MACRUM 0:99f7e7890e03 47 #ifdef __APCS_RWPI
MACRUM 0:99f7e7890e03 48 pc.printf("--apcs /rwpi is used\n");
MACRUM 0:99f7e7890e03 49 #endif
MACRUM 0:99f7e7890e03 50
MACRUM 0:99f7e7890e03 51 #ifdef __APCS_FPIC
MACRUM 0:99f7e7890e03 52 pc.printf("--apcs /fpic is used\n");
MACRUM 0:99f7e7890e03 53 #endif
MACRUM 0:99f7e7890e03 54
MACRUM 0:99f7e7890e03 55 #ifdef __BIG_ENDIAN
MACRUM 0:99f7e7890e03 56 pc.printf("Target is big endian\n");
MACRUM 4:2b25b7a2c5fd 57 #else
MACRUM 4:2b25b7a2c5fd 58 pc.printf("Target is little endian\n");
MACRUM 0:99f7e7890e03 59 #endif
MACRUM 0:99f7e7890e03 60
MACRUM 0:99f7e7890e03 61 #ifdef __CHAR_UNSIGNED__
MACRUM 0:99f7e7890e03 62 pc.printf("char type is unsigned\n");
MACRUM 0:99f7e7890e03 63 #else
MACRUM 0:99f7e7890e03 64 pc.printf("char type is signed\n");
MACRUM 0:99f7e7890e03 65 #endif
MACRUM 0:99f7e7890e03 66 pc.printf("EDG front-end version : %d\n", __EDG_VERSION__);
MACRUM 0:99f7e7890e03 67
MACRUM 0:99f7e7890e03 68 pc.printf("Emulated GNU version : %d.%d\n", __GNUC__, __GNUC_MINOR__);
MACRUM 0:99f7e7890e03 69 pc.printf("Current emulated GNU version : %s\n", __VERSION__);
MACRUM 0:99f7e7890e03 70
MACRUM 0:99f7e7890e03 71 pc.printf("Optimize level : %d\n", __OPTIMISE_LEVEL);
MACRUM 0:99f7e7890e03 72
MACRUM 0:99f7e7890e03 73 #ifdef __OPTIMISE_SPACE
MACRUM 0:99f7e7890e03 74 pc.printf("Optimized by size\n");
MACRUM 0:99f7e7890e03 75 #endif
MACRUM 0:99f7e7890e03 76
MACRUM 0:99f7e7890e03 77 #ifdef __OPTIMISE_TIME
MACRUM 0:99f7e7890e03 78 pc.printf("Optimized by speed\n");
MACRUM 0:99f7e7890e03 79 #endif
MACRUM 0:99f7e7890e03 80
MACRUM 0:99f7e7890e03 81 pc.printf("Target ARM architecture : %d\n", __TARGET_ARCH_ARM);
MACRUM 0:99f7e7890e03 82 pc.printf("Target Thumb architecture : %d\n", __TARGET_ARCH_THUMB);
MACRUM 0:99f7e7890e03 83 #else
MACRUM 0:99f7e7890e03 84 pc.printf("Not build with ARM compiler\n");
MACRUM 0:99f7e7890e03 85 #endif
MACRUM 4:2b25b7a2c5fd 86
MACRUM 4:2b25b7a2c5fd 87 while(1) {
MACRUM 4:2b25b7a2c5fd 88 myled = !myled;
MACRUM 4:2b25b7a2c5fd 89 wait(0.4);
MACRUM 4:2b25b7a2c5fd 90 }
MACRUM 0:99f7e7890e03 91 }