MPLAB® XC32 C Compiler

Microchip’s latest compiler line, the MPLAB® XC, provides a comprehensive solution for your project’s development software needs and replaces all MPLAB C and HI-TECH compilers. The MPLAB XC32 compiler:

  • Supports all 32-bit PIC® MCUs
  • Integrates with MPLAB® X IDE to provide a full graphical front end:
    • Editing errors and breakpoints match the corresponding lines in source code
    • Single step through C and C++ source code to inspect variables and structures at critical points
    • Data structures with defined data types, including floating point, display in watch windows
  • Runs on Windows, Linux and Mac OS X
  • Offers different optimization levels to suit your needs with FREE downloads available
Click image to enlarge.

 Learn More


 Self-Paced Training

The material in these training modules exists elsewhere on this site in a general reference format. However, the training modules present it in an organized, step-by-step sequence to help you learn the topic from the ground up.

 Frequently Asked Questions

Why does the program counter not reach the start of main()?
What is the maximum display refresh rate on a PIC32?
What does it mean when I receive a multiple definition compiler error, followed by a "link terminated due to previous error(s)"?
Unstable Digital Output Pins Behavior
Pointer Comparison Fails
Ensuring Compiler HPA is Recognized
Do you use the virtual or physical addresses on address attributes for PIC32 devices?
MPLAB® XC8, XC16, XC32 Compiler License Questions
How can I allocate a variable in program memory?
Error When Compiling a C++ Project in MPLAB® XC32 - "unknown type name 'class'"
MPLAB® XC32 Compiling Error - Cannot Find plib.h
How much graphics frame buffer memory is required to display one full screen?
How do you check if your MPLAB® XC compiler license is activated?
How do I resolve the MPLAB® XC32 error "small-data section exceeds 64 KB; lower small-data size limit (see option -G)"?
Why is a change notification interrupt run without the flag bit being set?
MPLAB® XC16/XC32 Compiler- How do you determine what files are inside a library (.a) file?
Why can’t I build in PRO Mode, even though the client machine is configured to use the Network Server license?
Where can I find the Peripheral Library for MPLAB® XC8/16/32?
C compilers - Casting to an expression is not working
C++ being used for a library/loadable top level project does not result in C++ being used to compile the dependent project
How can I find my MPLAB® XC Compiler Activation key?
How can I move an MPLAB® XC compiler license from one microchipDIRECT account to another?
Can I reserve memory from being used by the MPLAB® XC32 compiler?
Why is the compiler removing some of my code?
How can I cancel or renew my MPLAB® XC Compiler subscription license?
Why is the compiler not listed for my target device under MPLAB® X IDE?
Compilers - Can a subscription license be used as a network license?
In the MPLAB® X IDE output window, what does the message "HPA has ended" mean?
Can I remove the license from my machine to install on a newer machine?
How can I renew my HPA?
Why do I get the message "Options have been disabled due to restricted license" even though I have a valid license key?
Why am I encountering errors in my code pointing to missing Peripheral Library routines?
Where can I find older versions of the compiler?
Will HPA make my support for non-compiler related queries faster?
How do I change the output.hex file name in MPLAB® X IDE?
(XC32) How do I link in my own custom startup code with the XC32 Compiler?
(XC32) How can I reduce memory usage?
(XC32) How to use L1 cache in PIC32MZ devices?
(XC32) What are various exceptions in PIC32 MCUs and how should they be handled?
(XC32) How do I instruct printf to output to UART1 or other UART channels instead of UART2?
(XC32) How can I use software break points?
(XC32) How do I fix the "Data conflict at address 0x1FC00480" error while building a project with bootloader and application?
(XC32) How do I write a Interrupt Service Routine (ISR) for a particular interrupt vector for PIC32 devices using ISR macros?
Why Does It Take So Long To Build My Project?
What could cause glitches on an output port?
What could cause pins in a port to change from values I assign to them?
What could cause corrupted variables or code failure when I am using interrupts?
How do I fix errors relating to 'illegal conversion between pointer types' or 'illegal conversion of integer to pointer'?
Why don't the line numbers in an error message match the problematic line of code?
How do I ensure declarations are consistent across files?
How do I access bits in a RAM variable?
How can I speed up my interrupt service routine?
How do I create an array of pointers in program space (ROM)?
Why are some of my variables shown as not used?
Why are SFRs undefined in my assembly code?
When should I cast an expression?
Where can I find information about compiler messages?
Are administrator rights required to use the compiler in MPLAB® X IDE?
What is HPA (High Priority Access)?
© 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.