Skip to content
C and C++ library for STM32 ARM Cortex-M3 development boards.
C C++ Assembly Python Makefile PHP Other
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


                   _ _ _                           _
                  | (_) |__  _ __ ___   __ _ _ __ | | ___
                  | | | '_ \| '_ ` _ \ / _` | '_ \| |/ _ \
                  | | | |_) | | | | | | (_| | |_) | |  __/
                  |_|_|_.__/|_| |_| |_|\__,_| .__/|_|\___|
                                            |_|               by LeafLabs!

The latest version of this repository can be found here:

General information

libmaple is a library for programming ST's STM32 line of Cortex M3
microcontrollers.  It has a pure C layer, libmaple proper, which does
most of the work, and a C++ layer, Wirish, which provides high-level
convenience functions and a Wiring/Arduino-compatible interface.

libmaple's primary purpose is for use with LeafLabs' Maple line of
microcontroller development boards (hence the name). However, it is
portable across a variety of medium- and high-density STM32F1xx chips.
For example, libmaple has successfully been ported to the ST Discovery

Using libmaple

The easiest way to use libmaple is in concert with the Maple IDE.
Maple IDE, a sister project from LeafLabs, is an Arduino IDE fork
usable for programming Maple boards, which includes libmaple and a
compilation and upload toolchain:

Additionally, a HOWTO on setting up this library for use from the
command line in a Unix environment is available in our online HTML

Documentation, Etc.

HTML documentation for the latest release of libmaple/Maple IDE is
available here:

libmaple is well documented via Doxygen comments.  The HTML
documentation referenced above (which also includes the Doxygen
output) is automatically generated from the source files in the
leaflabs-docs repository.  In order to obtain the leaflabs-docs
repository, visit:

Our bugtracker is available at:

For changes that block official releases, see our wiki:

Repository Layout


    Compiler output


    Community-contributed resources.  LeafLabs doesn't maintain the
    contents of this directory, so it may get stale.


    Example code and test programs. Copy these to /main.cpp to compile them.


    This is the meat of the library.  C only, no C++.  The
    Arduino-like compatibility layer (in C++) is in /wirish/.


    Special-purpose libraries that don't merit inclusion in the
    /libmaple/ and /wirish/ directories, which are intended for
    general use.  Arduino-compatible libraries go here.


    Licensing and copyright information.


    main.cpp is required for a successful build but is non-existent by
    default; use this file as a template for building your program. By
    default, just blinks an LED.


    libmaple build instructions for GNU Make.


    Unstructured text notes that may be useful.


    This file.


    Support files and scripts for various purposes.

    gdb/              GDB scripts.
    ld/               Linker scripts.
    make/             Additional scripts used by the top-level Makefile.
    openocd/          OpenOCD scripts for JTAG debugging.
    scripts/          Miscellany.
    doxygen/          Doxygen configuration.    Script for uploading via the built-in USART bootloader.


    Extra wrappers and functionality around the lower level code in
    /libmaple/. These files implement an Arduino "Wiring"-like
Something went wrong with that request. Please try again.