This program can detect the type(mbed or LPCXpresso) of platform. The sample recognizes mbed or LPCXpresso.

Dependencies:   mbed

This program detects the LPCXpresso and mbed at run time.

There is a difference in the value of the CoreDebugRegister LPCXpresso and mbed.

The program check those bits and select platform type.

#include "mbed.h"
#include "PlatformInfo.h"
DigitalOut mbedled(LED1);
DigitalOut lpcxled(P0_22);
using namespace MiMic;
int main(){
    switch(PlatformInfo::getPlatformType()){
    case PlatformInfo::PF_MBED:
        while(1) {
            mbedled = 1;
            wait(0.2);
            mbedled = 0;
            wait(0.2);
        }
    case PlatformInfo::PF_LPCXPRESSO:
        while(1) {
            lpcxled = 1;
            wait(0.1);
            lpcxled = 0;
            wait(0.1);
        }
    }    
}

If program run on mbed, LED1(blue) will be blinking. If it run on LPCXpresso, LED2(red) will be blinking.

Revision:
0:ef577a5fd78f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PlatformInfo.cpp	Sun May 05 11:29:12 2013 +0000
@@ -0,0 +1,47 @@
+#include "PlatformInfo.h"
+#define REG_HCSR 0xe000edf0
+#define REG_DEMCR 0xE000EDFC
+
+#include "mbed.h"
+namespace MiMic
+{
+    int PlatformInfo::_pftype=PF_UNKNOWN;
+    void PlatformInfo::check()
+    {
+    #if PlatformInfo_DETECTION_MODE==PlatformInfo_DETECTION_MODE_MBED
+        _pftype=PF_MBED;
+        return;
+    #elif PlatformInfo_DETECTION_MODE==PlatformInfo_DETECTION_MODE_LPCXPRESSO
+        _pftype=PF_LPCXPRESSO;
+        return;
+    #elif PlatformInfo_DETECTION_MODE==PlatformInfo_DETECTION_MODE_AUTO
+        //LPCXpresso is return S_RESET_ST==1 when standalone.
+        wait_ms(200);
+        unsigned int v;
+        v=*(unsigned int*)REG_HCSR;
+        //check Debug Halting Control and Status::S_RESET_ST sticky bit
+        if((v & 0x02000000)!=0){
+            //may be LPC-Standalone
+            _pftype=PF_LPCXPRESSO;        
+            return;
+        }
+        v=(*(unsigned int*)REG_DEMCR);
+        if((v & 0x01000000)==0x0){
+            //may be mbed
+            _pftype=PF_MBED;
+            return;
+        }
+        _pftype=PF_LPCXPRESSO;
+        return;
+    #else
+        #error "ERROR!"
+    #endif
+    }
+    int PlatformInfo::getPlatformType()
+    {
+        if(_pftype==PF_UNKNOWN){
+            check();
+        }
+        return _pftype;
+    }
+}
\ No newline at end of file