MPLAB® Harmony v2 Timer Static Driver Project Using chipKIT® WF32 (step-by-step)

Step-by-Step Instructions

These step-by-step instructions were used to create a project in which timer1 is set up with a static driver and set to toggle LED3 at a 1/2 second period. The target hardware is the chipKIT® WF32 development board from Digilent® Inc.

1 Create a new MPLAB Harmony Project


Install the MPLAB® Harmony Configurator (MHC)

Before you create a new MPLAB® Harmony project, you must install the MPLAB Harmony Configurator (MHC) graphical user interface. This GUI enables easy addition and configuration of the Harmony library files needed for your application. It also allows MPLAB X IDE to create a new MPLAB Harmony project.

Instructions for installing the MHC plugin


Create a New MPLAB Harmony Project

  1. In the MPLAB X IDE, select File > New Project
    (or click Main_New_Project.png in the toolbar).
  2. Select the Microchip Embedded category if it is not already selected.
  3. From the Projects list, select MPLAB Harmony Project.
  4. Click Next >.

If you do not see MPLAB Harmony Project option, you have not installed the MHC. Click here for instructions on installing the MHC plugin.


The next window should have the default Harmony Path, Project Location, and Project Path already selected for you. Remember the MPLAB Harmony framework expects to find specific files in specific locations. Do not change these default paths because the project may not build.

  1. Set the Harmony installation path.
  2. Set the project location.
  3. Enter the project name you would like to use.
  4. Change the project configuration name or just use default (optional).
  5. Select the target device from the drop-down window (Which PIC32 is on my board?).
  6. Click Finish.

After you click Finish, your new project will be opened.

MPLAB® Harmony Project Wizard Details
Learn more >

Before creating an MPLAB Harmony Project, the MHC plugin must be installed into the MPLAB X IDE. Click here for instructions on how to install the MHC plugin.

This video will show you how to create an MPLAB Harmony Project in the MPLAB X IDE. For details on how an MPLAB Harmony Project differs from a typical standalone project, click here.

2 Use MPLAB Harmony Configurator (MHC) to configure the PIC32 core



Open the MPLAB Harmony Configurator by clicking:
Tools ▶ Embedded ▶ MPLAB® Harmony Configurator



Expand the Device and Project Configuration and PIC32… Device Configuration menus to see the Device Configuration Register menus.

Expand the DEVCFG1 register menu and change the setting as shown in this graphic.

Watchdog Timer Enable:

3 Use MHC to configure the PIC32 Clocks



Click on the MPLAB Harmony Clock Configuration tab.



Modify the clock configuration as shown:

System PLL Input Divider:
System PLL Multiplier:
System PLL Output Clock Divider:

Primary Oscillator Configuration:
Secondary Oscillator Enable:
Oscillator Selection Bits:
Peripheral Bus Divider Selection Bits:

See the "PIC32MX Oscillator" page for more detail on the PIC32MX oscillator system.


Here's a tip: The System PLL can be automatically configured to generate a specific output frequency.
In this example we are using an external 8MHz crystal oscillator to drive the PIC32.

  1. Enter the external clock frequency.
  2. Select the primary oscillator with PLL module (PRIPLL) to drive the system clock (SYSCLK).
  3. Click Auto-Calculate.
  4. Enter the desired System Clock frequency.
  5. Click Apply.

4 Use MHC to create a Static Timer Driver


Expand the Harmony Framework Configuration ▶ Drivers ▶ Timer menus to see the Timer Driver selections.

Configure the Timer Driver as shown in this graphic.

Note we have configured this Timer Driver to use Timer2 (TMR_ID_2) in 32 bit mode.


We want to configure this timer to generate an interrupt every 1/2 second. To do this, we have calculated the Timer Period to be 156,250.

A note on the hardware:
When Timer2 (16 bit native timer) is in 32 bit mode, it steals the extra bits it needs from Timer3. This combined 32 bit timer is configured using the Timer2 configuration registers. When Timer2 generates an interrupt in 32 bit mode, the interrupt source comes from Timer3.

5 Configure the I/O pin connected to the LED to be an output



Click on the MPLAB Harmony Pin Diagram and MPLAB Harmony Pin Table tabs.

The pin table can be sorted by pin number or port pin name. Right click anywhere in the pin table and select: view ▶ pins or
view ▶ ports.



Click on the Flags button to open the Pin Flags window. Click on the buttons in this window to configure the PIC32 I/O Port pins per the table below.

PIC32 Pin Configuration chipKIT WF32
RA0 Output LED3

6 Generate the Project Code


Click on the MPLAB Harmony Configurator Options tab, then click the Generate button.


Click the Save and Generate buttons on the following windows.

7 Complete the ISR Function


Click here to copy this code

Service the Interrupt Service Routine (ISR) and toggle the LED.

8 Add Code to Start Timer Driver Instance 0


Start Timer Driver instance '0'. You used MHC to select Timer2 (in 32-bit mode) to drive this driver instance.

9 Build, program and run your project

Click the Run icon to build, program, and run your project. See the "Build a Project For Release" page for more details.

© 2024 Microchip Technology, Inc.
Notice: ARM and Cortex are the registered trademarks of ARM Limited in the EU and other countries.
Information contained on this site regarding device applications and the like is provided only for your convenience and may be superseded by updates. It is your responsibility to ensure that your application meets with your specifications. MICROCHIP MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND WHETHER EXPRESS OR IMPLIED, WRITTEN OR ORAL, STATUTORY OR OTHERWISE, RELATED TO THE INFORMATION, INCLUDING BUT NOT LIMITED TO ITS CONDITION, QUALITY, PERFORMANCE, MERCHANTABILITY OR FITNESS FOR PURPOSE. Microchip disclaims all liability arising from this information and its use. Use of Microchip devices in life support and/or safety applications is entirely at the buyer's risk, and the buyer agrees to defend, indemnify and hold harmless Microchip from any and all damages, claims, suits, or expenses resulting from such use. No licenses are conveyed, implicitly or otherwise, under any Microchip intellectual property rights.