MPLAB® Harmony v3 Drivers and Middleware on PIC32MZ EF MCUs Using FreeRTOS: Step 4

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

Rename Default Main File

Under the Project Graph tab, click on System, and give a name of your choice to the default template main file generated by MCC.

main file name set up

The name of the default main.c is changed to main_pic32mz.c to indicate that the referred main.c is for the PIC32MZ EF getting started training module.

Step 4.2: Configure Application Threads and FreeRTOS

Go to the Project Graph and select Harmony Core Service.

harmony core

Back to Top


The Configuration Options tab shows that for a Harmony Project, MCC automatically enables generation of application files (app.c and app.h). Change the Number of Applications to '4'.

app names

Back to Top


Expand Application 0 Configuration and change the Application Name to 'app_sensor_thread'. This will create an RTOS thread _APP_SENSOR_THREAD_Tasks. Expand RTOS Configuration to configure Stack Size, Task Priority, and Task Delay. For this thread, use the default values.

 Application 0 Configuration

Back to Top


Expand Application 1 Configuration and change the Application Name to 'app_eeprom_thread'. This will create RTOS thread _APP_EEPROM_THREAD_Tasks.
Expand Application 2 Configuration and change the Application Name to 'app_usb_thread'. This will create an RTOS thread _APP_USB_THREAD_Tasks.
Expand RTOS Configuration to configure Stack Size, Task Priority, and Task Delay. For this thread, configure Task Delay in ms as 10 and remaining use as the default values.
Expand Application 3 Configuration and change the Application Name to 'app_user_input_thread'. This will create RTOS thread _APP_USER_INPUT_THREAD_Tasks.
Accept the default RTOS Configuration for the remaining two threads.

app eeprom usb userinput thread

Back to Top


Select FreeRTOS in Project Graph tab, and increase the heap size to 32000 bytes by configuring the Total heap size.

heap size conf

To run the seven threads in this application, the user needs to allocate sufficient heap memory. A heap size of 32,000 bytes is allocated based on observation and testing of the application project.

Back to Top