Harmony v3 Drivers and Middleware on PIC32MZ EF MCUs using FreeRTOS: Step 7

Last modified by Microchip on 2023/11/09 09:07

Build, Program, and Observe the Outputs

Verify that the temperature sensor (I/O1 Xplained Pro Extension Kit) is connected to the Extension Header 1 (EXT1) on the Curiosity PIC32MZ EF 2.0 Development Board.

hardware setup​​

Connect USB On-The-Go (OTG) thumb drive (pendrive having micro USB connector) or connect any pendrive using Type-A female to micro-B USB converter cable to Target USB (J201) on the Curiosity PIC32MZ EF 2.0 Development Board.

hardware setup​​

The Curiosity PIC32MZ EF 2.0 Development Board allows the PICkit™ On Board 4 (PKoB 4) to be used for debugging. Connect the Type-A male to micro-B USB cable to the micro-B DEBUG USB port to power and debug the Curiosity PIC32MZ EF 2.0 Development Board.

hardware setup​​

Clean and build your application by clicking on the Clean and Build button as shown in the accompanying image.

Clean and Build button

Program your application to the device by clicking on the Make and Program button as shown in the accompanying image.

Make and Program button

Select MPLAB PKoB 4 under Curiosity/Starter Kits (PKOB4) when prompted.

Starter Kits (PKOB) not Found window

The lab should build and program successfully.

Now, open the Tera Term terminal application on your PC (from the Windows® Start menu by pressing the Start button).

Select the Serial Port as shown in the accompanying image.

Tera Term: New connection dialog

Open the Serial Port and configure the Baud Rate (Speed) to 115200.

Setup > Serial port menu

Tera Term: Serial port setup dialog

You should see the temperature values (in °F) being displayed on the terminal every second as shown in the accompanying image.

temperature values

Also, notice the LED1 blinking at a one-second rate.

Press any character on the terminal to display the last five values written to the EEPROM.

temperature last five values

You should see the LED2 is in the "ON" state whenever you connect a USB thumb drive and the application creates a text file Temperature_Sensor_Data.txt if it is not already present in the USB thumb drive.

The latest room temperature samples are written to the text file at a one-second rate.

To view the data in the text file, connect the USB thumb drive to a PC USB port and open the Temperature_Sensor_Data.txt file.

temperature saved file​​​​

temperature saved data​​​​

You may vary the temperature by placing your finger on the temperature sensor (for a few seconds).

temp sensor placement​​​


You observed that the application displayed the current room temperature values on the serial terminal every second. Also, you observed that the application retrieved and printed (on the serial terminal) the last five stored temperature values from EEPROM every time you entered a character on the serial terminal. You also observed the application created a file and wrote temperature sensor data in a connected USB thumb drive on a timeout basis. You also observed that a user LED was toggled every time the current temperature is displayed on the serial terminal and also user LED indicated the connection status of the USB thumb drive.


You have successfully created an application using MPLAB® Harmony v3 on the PIC32MZ EF microcontroller. Your application used all the fundamental elements that go into building a real-time application. Your application successfully read temperature sensor values and displayed them periodically over a serial terminal on a PC. While the temperature values were getting printed on the serial terminal, the application stored the temperature values into an EEPROM and to a file in a USB thumb drive whenever the USB thumb drive is connected. The application retrieved the last five values stored in EEPROM and displayed them on the serial terminal when a user requested them (by entering a character on the serial terminal).

In this application, you used MPLAB Harmony Configurator (MHC) to configure PIC32MZ EF and to use the MPLAB Harmony v3 Framework. You verified the clock configurator to set up the CPU clock and peripheral clocks. You configured synchronous drivers I²C, Universal Synchronous Asynchronous Receiver Transmitter (USART), and USB High-Speed driver. You configured I²C1, UART6, and Core Timer PLIBs. You used System Services and Middleware libraries like SysTime, USB Host Stack, and File System. You used Board Support Package (BSP) and Pin Configurator to set up the pins for LED and peripheral (USART, I²C, and USB) pins. You built this application using FreeRTOS. You created FreeRTOS threads and configured FreeRTOS stack and heap size for the application threads.


This tutorial provided you with the training for configuring and using all the fundamental components needed to build a real-time application using FreeRTOS on a PIC32MZ EF microcontroller with MPLAB Harmony v3 Framework. As a next step, you may customize this application and reconfigure some of the components used in this tutorial. You could also add new components (Drivers, etc.), and additional threads to enhance this application to realize your end application.

Back to Top