Mistake on this page?
Report an issue in GitHub or email us

Using the Online Compiler

Setting up

  1. Create an Mbed account.

  2. Plug your Mbed board into your computer, and open its USB device folder.

    If you don't have a board but still want to follow the quick start, go to os.mbed.com/platforms, select a board and click Add to your Mbed Compiler.

  3. Double click on the MBED.HTML file. This adds your Mbed board to the Online Compiler as a compilation target.

Importing the code

Click the button below to automatically import the example into the Online Compiler.

/* mbed Microcontroller Library
 * Copyright (c) 2018 ARM Limited
 * SPDX-License-Identifier: Apache-2.0
 */

#include "mbed.h"
#include "stats_report.h"

DigitalOut led1(LED1);

#define SLEEP_TIME                  500 // (msec)
#define PRINT_AFTER_N_LOOPS         20

// main() runs in its own thread in the OS
int main()
{
    SystemReport sys_state( SLEEP_TIME * PRINT_AFTER_N_LOOPS /* Loop delay time in ms */);

    int count = 0;
    while (true) {
        // Blink LED and wait 0.5 seconds
        led1 = !led1;
        wait_ms(SLEEP_TIME);

        if ((0 == count) || (PRINT_AFTER_N_LOOPS == count)) {
            // Following the main thread wait, report on the current system status
            sys_state.report_state();
            count = 0;
        }
        ++count;
    }
}

Alternatively, you may select the import button on the top left hand side of the Online Compiler screen and copy the example link into the prompt.

Compiling and flashing (programming)

  1. Click Compile. Your browser downloads the program as an executable file.

  2. Open the folder where the executable file was downloaded, and then click and drag (or copy and paste) the file to your Mbed board's USB device folder.

  3. Press the board's reset button.

Example walkthrough

The quick start example blinks the LED on your board on and off. The main thread also takes a snapshot of the device's runtime statistics and displays them over a serial connection to your PC.

Viewing the output

To view the serial output use any terminal client, such as PuTTY or CoolTerm.

The default baud rate, or speed, for this application is set to 9600. You can modify it in the mbed_app.json file. To configure your terminal client to this baud rate, change the speed option when selecting the port.

Tip: You can find more information on the Mbed OS configuration tools and serial communication in Mbed OS in the related links section.

The output transmits the following block at the blinking LED frequency (actual values may vary depending on your target, build profile and toolchain):

=============================== SYSTEM INFO  ================================
Mbed OS Version: 999999
CPU ID: 0x410fc241
Compiler ID: 2
Compiler Version: 60300
RAM0: Start 0x20000000 Size: 0x30000
RAM1: Start 0x1fff0000 Size: 0x10000
ROM0: Start 0x0 Size: 0x100000
================= CPU STATS =================
Idle: 98% Usage: 2%
================ HEAP STATS =================
Current heap: 1096
Max heap size: 1096
================ THREAD STATS ===============
ID: 0x20001eac
Name: main_thread
State: 2
Priority: 24
Stack Size: 4096
Stack Space: 3296

ID: 0x20000f5c
Name: idle_thread
State: 1
Priority: 1
Stack Size: 512
Stack Space: 352

ID: 0x20000f18
Name: timer_thread
State: 3
Priority: 40
Stack Size: 768
Stack Space: 664

Understanding the output

System information

Mbed OS version: Tip of master is represented by 999999. If you are using a tagged release of Mbed OS, the version will be configured by the OS. For custom releases, you can modify the version manually in platform/mbed_version.h.

CPUID register information:

Bit Field Field Description Values
[31:24] Implementer 0x41 = ARM
[23:20] Variant Major revision 0x0 = Revision 0
[19:16] Architecture 0xC = Baseline Architecture
0xF = Constant (Mainline Architecture)
[15:4] Part Number 0xC20 = Cortex-M0
0xC60 = Cortex-M0+
0xC23 = Cortex-M3
0xC24 = Cortex-M4
0xC27 = Cortex-M7
0xD20 = Cortex-M23
0xD21 = Cortex-M33
[3:0] Revision Minor revision: 0x1 = Patch 1

Compiler ID and version:

Compiler Version tag Version layout
ARM 1 PVVbbbb (P = Major; VV = Minor; bbbb = build number)
GCC_ARM 2 VVRRPP (VV = Version; RR = Revision; PP = Patch)
IAR 3 VRRRPPP (V = Version; RRR = Revision; PPP = Patch)
CPU statistics

Percentage of runtime the device has spent awake.

Heap statistics
  • Current heap size.
  • Maximum size the heap has ever reached (not the maximum size it can reach).
Thread statistics

Provides information on all running threads in the OS:

  • ID.
  • Name.
  • State.
  • Priority.
  • Stack size.
  • Stack space.
Important Information for this Arm website

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies. If you are not happy with the use of these cookies, please review our Cookie Policy to learn how they can be disabled. By disabling cookies, some features of the site will not work.