Microchip logo
  • All
  • Products
  • Documents
  • Applications Notes


MPLAB Harmony v3

Embedded Software Development Framework for 32-bit Microcontrollers and Microprocessors

Porting complex embedded software to different microcontrollers (MCUs) and microprocessors (MPUs) can be very time consuming and expensive, wasting resources that could be better invested in the development of new applications.

MPLAB® Harmony v3 is a fully integrated embedded software development framework that provides flexible and interoperable software modules that allow you to dedicate your resources to creating applications for our 32-bit PIC® and SAM devices, rather than dealing with device details, complex protocols and library integration challenges. It works seamlessly with MPLAB X Integrated Development Environment (IDE) and the MPLAB XC32 Compiler to enable a smooth transition and maximum code reuse between PIC32 MCUs and SAM MCUs and MPUs.

Harmony - Integrate, Harmonize

As an extension to the MPLAB development ecosystem, MPLAB Harmony v3 requires just a few mouse clicks to enable an automated and transparent software porting capability across any of our 32-bit device family platforms that have compatible hardware capabilities. It includes MPLAB Harmony Configurator (MHC), an easy-to-use development tool with a Graphical User Interface (GUI) that simplifies device set up, library selection, configuration and application development. MHC is available as a plug-in that directly integrates with MPLAB X IDE and has a separate Java executable for stand-alone use with other development environments.

This framework also comes with ready-to-use peripheral libraries, drivers, reusable middleware, many application examples and integrated third-party solutions, so you can focus on adding features and value to your applications while reducing your embedded software development time and costs.

What’s New in MPLAB Harmony v3?

  • Support for SAM families of Arm® Cortex®-M based devices
    • Free development environment
    • No need to pay high licensing fees
  • Easy device and library setup using the graphical configuration features and point-and-click options selections provided by MHC’s GUI
  • Optimized peripheral libraries to simplify device set up, peripheral usage and debugging while saving space in device memory
  • Modular downloads and updates through GitHub for better installation and configuration management
    • Enables you to download just the support you need
    • Simplifies updates and version management
  • Easier integration with FreeRTOS while still providing the same great support for other real-time operating systems and third-party content
  • Unified support for 32-bit PIC MCUs and SAM MCUs and MPUs

MPLAB Harmony v3 Embedded Software Development Framework Components

Harmony Configurator Block Diagram

MPLAB Harmony v3 Includes:

  • MPLAB Harmony Configurator (MHC)
    • Easy-to-use development tool with a Graphical User Interface (GUI) that simplifies device setup, library selection and configuration and application development
    • Available as a plug-in that directly integrates with MPLAB X IDE and as a separate Java executable for stand-alone use with other development environments
  • FreeRTOS
    • Enabled by default for a simpler programming model whenever MPLAB Harmony v3 drivers, system services or middleware libraries are used
  • Optimized peripheral libraries
    • Simplify device setup while saving space in device memory
  • Simplified drivers
    • Provide a highly abstracted interface to peripherals
  • Powerful middleware
    • Adapted to hardware-specific details by driver components which provide library packages for key capabilities required by today’s embedded devices for implementing a variety of applications. Click on the Applications tab below to learn more.

Are You Ready to Start Developing with MPLAB Harmony v3?

MPLAB Harmony v3 content repositories are maintained on GitHub. To download (or clone) the repositories, first download and install the MPLAB X IDE and the MPLAB Harmony v3 Downloader plug-in as described in the following instructions.

Download and Install MPLAB X IDE

If you already have the free, downloadable MPLAB X IDE installed, skip this section and go to the “Install and Run the MPLAB Harmony v3 Configurator” section. Otherwise you can use the following links to download the latest version for your operating system. Once downloaded, run the installer and follow the on-screen instructions.

Install and Run the MPLAB Harmony v3 Configurator

After you have downloaded MPLAB X IDE, follow these steps to download MPLAB Harmony v3 repositories:

Step 1: Open MPLAB X IDE
Step 2: Select Tools > Plugins Download and click Go to MPLAB X Plugin Manager
Step 3: Check the Install box next to MPLAB Harmony Configurator 3, click the Install button and follow the directions given by the Plugin Installer (select Restart Now when prompted)
Step 4: When MPLAB X IDE restarts, select Tools > Embedded > MPLAB Harmony v3 Framework Downloader to copy (clone) the repositories to a selected folder on your computer

For additional instructions, see the MPLAB Harmony v3 Wiki.  Click on the device support buttons to learn which specific part numbers are supported in MPLAB Harmony v3.

Guidelines for Porting from v2.xx

Since MPLAB Harmony v3 contains the same middleware, driver and service interfaces or provides adapters for them, the code you created in MPLAB Harmony v2.xx should work without requiring that you make any changes. However, there may be some exceptions depending on the level of customization or direct use of peripheral libraries for your project. Here are some guidelines:

  • No porting effort should be necessary if interface abstractions were not violated and only common features were used
  • Drivers and services were re-implemented to support SAM devices:
    • Updates may be required to take advantage of additional features of SAM devices
    • Updates may be required for code using features not supported on SAM devices
  • Code using MPLAB Harmony v2 PLIBs directly will have to be re-implemented:
    • PLIB interfaces may not be identical from version-to-version or from device-to-device
    • Only drivers and services (or higher-level libraries) provide interface consistency across different devices (if the feature used is supported) and across minor releases
    • Interface changes may occur in driver, service, and middleware libraries if a major release’s version number changes, but ease of migration will be a priority
    • For maximum portability and reusability, the MPLAB Harmony team recommends using the library with the highest level of abstraction that provides the needed capabilities





Audio Library: This repository contains a variety of audio drivers, encoders, decoders, and firmware projects that demonstrate the capabilities of the MPLAB Harmony v3 audio offerings. Each example application project describes its hardware setup, block diagram, requirements, hardware compatibility and operation.



Bluetooth Library: This repository contains the MPLAB Harmony v3 Bluetooth Package (bt). It supports a fast-to-market Bluetooth development environment for 32-bit SAM and PIC microcontrollers.



Cryptography Library: The Cryptographic library includes functions to perform encryption, decryption, hashing, authentication and compression within an embedded application. Random Number Generation (RNG) functions are also provided.



Graphics Library: The graphics repository contains the files for MPLAB Harmony Graphics Suite quick-start applications, drivers, tools, libraries and templates.

Graphics Apps

Lamb Game

Graphics Apps Library: The graphics apps repository contains the graphics application package (GFX Apps). This is a more extensive set of highly integrated, stand-alone applications that demonstrate some of the capabilities of graphics in MPLAB Harmony v3 for 32-bit PIC and SAM microcontrollers.

Motor Control

Motor Control

Motor Control Library: This module contains motor control demonstrations implemented on 32-bit microcontrollers.


Touch Gesture

Touch Library: Use this software library for developing touch applications on 32-bit microcontrollers with a Peripheral Touch Controller. The library supports both self-capacitance and mutual-capacitance acquisition methods.

Networking (TCP/IP)


Networking (TCP/IP) Library: This repository provides a fast-to-market TCP/IP stack for 32-bit PIC and SAM microcontrollers. It contains multiple applications that demonstrate communication over TCP/IP using well-known protocols like TCP, UDP, HTTP, SMTP, etc.



USB Library: The USB module provides USB controller drivers for 32-bit PIC and SAM devices, as well as Host and Device middleware with support for common device classes.




MPLAB Harmony Badge Rollover

The core module components provide the simple-to-use abstractions of 32-bit SAM and PIC device peripherals and shared resources on which the MPLAB Harmony 3 middleware is based, including drivers, services and the Operating System Abstraction Layer (OSAL).

Chip Support Package (CSP)

MPLAB Harmony Badge Rollover

The CSP module contains independent, low-level Peripheral Libraries (PLIBs) that are simple functions to initialize and control peripherals and basic device features on which MPLAB Harmony 3 drivers and services are based. The CSP supports initialization of 32-bit devices and development of simple applications that directly control peripheral hardware with minimal external dependencies.

Board Support Package (BSP)

MPLAB Harmony Badge Rollover

The BSP module provides initial configuration settings for PIC and SAM Xplained development boards.

MPLAB Harmony  Configurator (MHC)

MPLAB Harmony Badge Rollover

The MHC repository contains the implementation of MPLAB Harmony Configurator (MHC), a Graphical User Interface (GUI) based configuration utility that accelerates the development of embedded applications using 32-bit SAM and PIC devices.


MPLAB Harmony Badge Rollover

The bootloader module components provide a framework to develop bootloaders for SAM microcontrollers. The Bootloader Library can be used to upgrade firmware on a target device without requiring an external programmer or debugger.





The wolfSSL embedded SSL library (formerly CyaSSL) is a free-to-use, lightweight SSL/TLS library written in ANSI C and targeted at embedded, RTOS and resource-constrained environments. It supports TLS 1.3.



wolfMQTT is an implementation of the MQTT Client written in C for embedded use and that supports SSL/TLS via the wolfSSL library. This free-to-use library was built from the ground up to be multi-platform, space conscious and extensible. It integrates with wolfSSL to provide TLS support.



wolfSSL's Embeddable SSH Server is a free-to-use, lightweight Secure Shell library that provides server-side support for SSH v2.0 capabilities. It is dependent on wolfCrypt.

Micrium® OS-III

Micrium Logo

The Micrium OS-III repository contains µCOS-III port files and demonstrations implemented on 32-bit PIC and SAM microcontrollers.


free rtos

FreeRTOS, an industry-leading, open-source, real-time operating system is enabled by default with Harmony v3 drivers, middleware and system services. It is accessed directly from the CMSIS FreeRTOS repository. This enables you to schedule tasks in your application quickly. If bare-metal development (without RTOS support) or use of another supported real time operating system is desired, simply select the desired option from the available RTOS configuration.